开发者问题收集

Android 上无法获取博览会推送令牌

2018-11-07
4873

我正在构建一个基于 Expo 的 React Native 应用,并且我还想结合 Firebase 实时数据库 利用 Expo 的推送通知功能。我基本上按照 此处 描述的步骤进行操作。在到达必须提取推送通知令牌的部分之前,一切都进展顺利。

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 手机上观察应用程序运行时发生的情况。软件包的版本如下:

[email protected]

[email protected]

[email protected]

我想让它在 Android 上运行,但仍然没有成功。我在 i-net 上看到有些人只是使用 FCM 进行推送通知 ,但仍然不确定。我的理解是:

Note that FCM cannot be used to send messages to the Android Expo Client. Also, FCM is not currently available for Expo iOS apps.

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

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

[Error: Couldn't get GCM token for device]

3个回答

[Error: Couldn't get GCM token for device]

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

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

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

Zayco
2019-01-29
  1. 如果尚未注册 expo,请先注册。
  2. 如果尚未安装 expo-cli,请先安装。
  3. 使用“expo login”在您的 cli 上登录 expo。
  4. 使用“expo start”运行您的应用。
44kksharma
2019-08-25

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

对于 Android,您还需要将 Firebase Cloud Messaging 服务器密钥上传到 Expo,以便 Expo 可以向您的应用发送通知。除非您不创建自己的 APK 而只是使用 Google Play 中的 Expo Client 应用,否则此步骤是必需的。按照使用 FCM 进行推送通知的指南了解如何创建 Firebase 项目、获取 FCM 服务器密钥以及将密钥上传到 Expo。

Cliche818
2019-01-03