开发者社区 问答 正文

如何使用Android Studio将FCM令牌保存到CPanel的MySQL数据库?

我正在执行webview项目。我在哪里实施了Firebase Messenger服务。当用户从chrome登录时,我可以使用php轻松保存令牌,但是我想知道当用户从webview登录时,如何将fcm令牌保存到mysql。

展开
收起
保持可爱mmm 2019-11-15 15:31:35 661 分享 版权
阿里云 AI 助理回答

为了在您的Webview项目中集成Firebase Messenger服务并保存FCM令牌到MySQL数据库,当用户通过Webview登录时,您需要遵循以下步骤:

1. 集成Firebase到Web应用

确保您的Web应用已集成Firebase Cloud Messaging (FCM)。这通常涉及以下步骤: - 在Firebase控制台添加Web应用。 - 下载配置文件firebase-config.js并将其包含在您的HTML头部。 - 初始化Firebase SDK,并请求用户授权接收通知。

2. 获取FCM令牌

使用Firebase SDK的getToken方法获取用户的FCM设备令牌。此操作应在用户登录后执行,确保与用户身份关联。

firebase.messaging().getToken()
  .then((currentToken) => {
    if (currentToken) {
      // Send the token to your server via a POST request.
      saveTokenToServer(currentToken);
    } else {
      // Show permission request.
    }
  })
  .catch((err) => {
    console.log('An error occurred while retrieving token. ', err);
  });

3. 发送FCM令牌到服务器(PHP)

创建一个PHP脚本以接收来自Webview的FCM令牌并通过AJAX请求保存到MySQL数据库。

前端AJAX示例:

function saveTokenToServer(token) {
  fetch('your-php-save-token-script.php', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({fcm_token: token}),
  })
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
}

后端PHP脚本示例 (your-php-save-token-script.php):

<?php
// Connect to MySQL database
$servername = "your_servername";
$username = "your_username";
$password = "your_password";
$dbname = "your_dbname";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Get token from POST request
$fcmToken = $_POST['fcm_token'];

// Save token to MySQL
$sql = "INSERT INTO user_fcm_tokens (user_id, fcm_token) VALUES ('your_user_identifier', '$fcmToken') ON DUPLICATE KEY UPDATE fcm_token='$fcmToken'";

if ($conn->query($sql) === TRUE) {
    echo json_encode(['success' => true, 'message' => 'Token saved successfully.']);
} else {
    echo json_encode(['success' => false, 'message' => 'Error: ' . $sql . '<br>' . $conn->error]);
}

$conn->close();
?>

请注意,您需要根据实际情况替换数据库连接信息、表名以及如何识别当前用户(例如通过session或cookie)。

通过以上步骤,您可以实现在用户从Webview登录时,将FCM令牌保存到MySQL数据库的功能。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答