无法在Android上获得EXPO Push令牌

时间:2018-11-07 23:30:29

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

我正在构建一个基于Expo的React本机应用程序,我还想结合使用Firebase realtime database和Expo的推送通知功能。我基本上是按照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令牌]

4 个答案:

答案 0 :(得分:1)

  

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

如果您尚未登录expo-cli,也会触发该事件。

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

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

答案 1 :(得分:0)

我遇到了这个问题,需要设置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。

答案 2 :(得分:0)

除了配置FCM外,您还必须登录到博览会帐户(或创建一个),否则仍然会出现相同的错误。

答案 3 :(得分:0)

  1. 如果尚未完成,请注册并参加博览会。
  2. 如果尚未安装expo-cli,则请安装。
  3. 使用“ expo登录”登录cli上的expo。
  4. 使用“ expo start”运行您的应用。