【问题标题】:Can not get expo push token on Android无法在 Android 上获取博览会推送令牌
【发布时间】:2019-04-11 11:21:55
【问题描述】:

我正在构建一个基于 Expo 的 React 本机应用程序,并且我还想结合使用 Expo 的推送通知功能与 Firebase realtime database。我基本上遵循here 描述的步骤。在到达必须提取推送通知令牌的部分之前,一切进展顺利。

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 开始博览会并扫描生成的 QR 码(使用他们的 IOS/Android 客户端应用程序)。然后,再次在浏览器加载的 CLI 中,我分别在 iPhone 和 Android 手机上观察应用程序运行时发生的情况。包的版本如下:

expo@31.0.2

firebase@5.5.7

react-native@0.57.1​​

我想让它在 Android 上运行,但仍然没有成功。我在 i-net 上看到有些人只是使用FCM for Push Notifications,但仍然不确定。我的理解方式:

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

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

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

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

【问题讨论】:

    标签: react-native push-notification firebase-cloud-messaging react-native-android expo


    【解决方案1】:

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

    如果您没有登录 expo-cli 也会触发。

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

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

    【讨论】:

      【解决方案2】:
      1. 如果尚未完成,请注册 expo。
      2. 如果您还没有安装 expo-cli,请安装。
      3. 使用“expo login”在您的 cli 上登录到 expo。
      4. 使用“expo start”运行您的应用。

      【讨论】:

        【解决方案3】:

        我遇到了这个问题,需要设置 Firebase。它隐藏在文档中 (https://docs.expo.io/versions/latest/guides/push-notifications):

        对于 Android,您还需要将 Firebase 云消息传递服务器密钥上传到 Expo,以便 Expo 可以向您的应用发送通知。除非您没有创建自己的 APK 并且仅使用 Google Play 中的 Expo Client 应用程序,否则此步骤是必要的。按照使用 FCM 进行推送通知的指南了解如何创建 Firebase 项目、获取 FCM 服务器密钥并将密钥上传到 Expo。

        【讨论】:

          【解决方案4】:

          除了配置FCM外,还必须登录你的expo账号(或者创建一个),否则还是会出现同样的错误。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-12-21
            • 1970-01-01
            • 2019-10-08
            • 1970-01-01
            • 2020-12-04
            • 2016-05-08
            • 1970-01-01
            • 2019-05-31
            相关资源
            最近更新 更多