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

use*_*702 3 push-notification react-native react-native-android firebase-cloud-messaging expo

我正在构建一个基于Expo的 React 本机应用程序,我还想结合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)
  }
Run Code Online (Sandbox Code Playgroud)

问题发生在这一行:

let token = await Notifications.getExpoPushTokenAsync();
Run Code Online (Sandbox Code Playgroud)

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

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

世博会@31.0.2

firebase@5.5.7

react-native@0.57.1

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

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

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

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

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

Zay*_*yco 5

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

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

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

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