我正在使用zo0r react-native-push-notification库。
出于某种原因,当我在移动设备(app
或iOS
上安装Android
后第一次打开 PushNotification.configure({
onRegister: function(token) {
console.log( 'TOKEN:', token );
},
onNotification: function(notification) {
console.log( 'NOTIFICATION:', notification );
},
senderID: "YOUR GCM SENDER ID",
permissions: {
alert: true,
badge: true,
sound: true
},
popInitialNotification: true,
requestPermissions: true,
});
时,令牌将返回为空。
"react": "16.0.0-alpha.6",
"react-native": "^0.44.3",
"react-native-push-notification": "^3.0.1"
我的问题是,如果onRegister方法将token返回为null,那么获取令牌的最佳方法是什么? 我是否必须在应用程序的其他屏幕中调用此功能?
async function* it() {
yield "Hello";
yield "World";
}
async function test() {
for await (const x of it()) {
console.log()
}
}
感谢您的帮助,
Mikhi
答案 0 :(得分:0)
这个问题FCM.getAPNSToken()
在FCM.requestPermissions()
之后运行,所以应用程序在方法运行时没有获得推送通知的权限。
变化:
componentDidMount -> async componentDidMount
和
FCM.requestPermissions(); -> await FCM.requestPermissions();
答案 1 :(得分:0)
我遇到了同样的问题。我不知道为什么 PushNotification.configure 在 iOS 上不起作用,所以你应该使用
const fcmToken = await firebase.messaging().getToken();
if (fcmToken) {
// user has a device token
} else {
// user doesn't have a device token yet
}
而不是 PushNotification.configure,(如果您使用 await,请不要忘记使用 async),或其他方式:
firebase.messaging().getToken()
.then(fcmToken => {
if (fcmToken) {
// user has a device token
} else {
// user doesn't have a device token yet
}
});
而对于Android,我上面发送o的方法不起作用。但 PushNotification.configure 有效。您应该使用 PushNotification.configure 来获取 android 的令牌。您应该检查您的 SDK、firebase-messaging 版本并更新您的 android studio,因为旧版本的 Android studio 不支持新版本的 firebase-messaging。完成这些事情后,我在 Android 上成功获得了令牌。如果您在更新这些内容时遇到麻烦,我可以向您发送所有版本的详细信息以及如何更新它们。