【发布时间】: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