无法在 Android 上获取 expo 推送令牌

2024-01-09

我正在构建一个 React 本机应用程序,它基于Expo https://expo.io/我还想结合利用 Expo 的推送通知功能Firebase 实时数据库 https://firebase.google.com/docs/database/。我基本上遵循所描述的步骤。在到达必须提取推送通知令牌的部分之前,一切都进展顺利。

registerForPushNotificationsAsync = async (userInfo) => {
    // ... Stuff

    // Get the token that uniquely identifies this device
    let token = await Notifications.getExpoPushTokenAsync();
    console.log("Expo token: " + token);
    var updates = {}
    updates['/expoToken'] = token
    firebase.database().ref('Users').child(userInfo.user.uid).update(updates)
  }

问题发生在这一行:

let token = await Notifications.getExpoPushTokenAsync();

它永远不会返回值,我无法获取推送令牌。这是 Android 特定的(Android 7.0),并且它不会出现在 iPhone (iOS 11.0.2) 上。在 iPhone 上返回一个令牌,我成功地将其存储在数据库中。

我正在做的是使用他们的 CLI 启动 expo 并扫描生成的二维码(使用他们的 IOS/Android 客户端应用程序)。然后,再次在加载 CLI 的浏览器中,我分别观察 iPhone 和 Android 手机上的应用程序运行时发生的情况。软件包的版本如下:

[电子邮件受保护] /cdn-cgi/l/email-protection

[电子邮件受保护] /cdn-cgi/l/email-protection

[电子邮件受保护] /cdn-cgi/l/email-protection

我想在 Android 上运行它,但仍然没有成功。我在网上看到有些人只是用用于推送通知的 FCM https://docs.expo.io/versions/v28.0.0/guides/using-fcm但仍不确定。我的理解方式是:

请注意,FCM 不能用于向 Android Expo 发送消息 客户。此外,FCM 目前不适用于 Expo iOS 应用程序。

问题是,使用 FCM 永远无法让推送通知同时适用于 IOS 和 Android。

EDIT:更新 Android 客户端应用程序后,现在我收到一条消息:

[错误:无法获取设备的 GCM 令牌]


[错误:无法获取设备的 GCM 令牌]

如果您未登录 expo-cli,也会触发。

您的登录状态显示在 Expo Dev Tools 的左上角。

如果您没有看到“以“用户名”登录”,请运行expo login在 cli 中并提供您的用户名和密码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Android 上获取 expo 推送令牌 的相关文章

随机推荐