Rest推送通知/设备注册/通过TestFlight或App Store更新的实例ID-Firebase Cloud Messaging iOS / React Native Firebase

问题描述 投票:1回答:1

在此问题上进行了很多研究,首先是我的设置:

我的问题很简单明了,尽管我似乎无法找到解决问题的明确方法。

我部署了我的应用程序的4.2版本。 iOS中的Firebase Cloud Messaging(FCM)只是花哨的。然后,我将4.3部署到TestFlight以开始测试。通过TestFlight和FCM安装的4.3停止工作,没有推送通知。如果我删除该应用程序并通过TestFlight推送通知安装4.3再次起作用,则该设备已注册。

我还可以重现此问题,从最近发布的App Store更新我的应用程序的安装版本,这并不奇怪。

我知道InstanceId /设备令牌基于应用程序的构建+设备,因此在应用程序更新时令牌会发生变化,但是当我从4.2更新到4.3时我的令牌是相同的。

const fcmToken = await firebase.messaging().getToken(); //same whether 4.2 or 4.3

是,firebase.messaging()。getToken()在初始创建时就被缓存。

所以我被安排收听令牌更改事件:

firebase.messaging().onTokenRefresh(async () => {
  console.log('======onTokenRefresh=========');
  AsyncStorage.removeItem(FCM_TOKEN_KEY);
  await getToken();
});

这似乎从未触发。我什至在我的应用程序中添加了一个按钮,以在从TestFlight或AppStore更新版本后尝试强制使用新的InstanceId并向FCM注册,这无济于事:

export async function forceRefresh() {
  console.log('================force a new registration!!!==========');
  AsyncStorage.removeItem(FCM_TOKEN_KEY);
  firebase.messaging().deleteToken();
  firebase.iid().deleteToken();
  registerForPushNotificationsAsync(true);
} 

不,不起作用。

所以,故事的寓意是,当我更新应用程序的版本时,推送通知一直有效的客户,当他们将其应用程序更新到下一个版本时,将不再为其推送通知注册。

可能是我一直在研究的参考文献:

有趣的应用程序更新开始,由于应用程序更新,推送通知将停止工作,我看到了两个不同的令牌,也许第一个是APN token from Apple

2020-01-17 18:48:09.371741-0800 native[4462:1287461] -[RNFirebaseMessaging messaging:didReceiveRegistrationToken:] [Line 86] Received new FCM token: eBBgznWj1FU:APA91bF8vTmpkwcojp4oDSKFzlPDp6ylEIe_WGNzu24SKHS6RR-3xPu2-cX-Qyc8rrMIQMvkCJftT9711ll1WdshBWS4iEpZ3XpiPeTynqM-nvDjpAUUUWJpfT5aeo6G_scDsN9iipwI
2020-01-17 18:48:09.378382-0800 native[4462:1287621] 6.15.0 - [Firebase/InstanceID][I-IID014012] Invalidating cached token for 255558254149 (*) due to token is no longer fresh.

再过一会,我从加载了推送通知的应用程序的先前版本中获取了我以前的令牌,然后在日志中看到了工作“默认令牌”:

2020-01-17 18:48:09.987571-0800 native[4462:1287610] 6.15.0 - [Firebase/InstanceID][I-IID014001] Token fetch successful, token: dUY5psWDnkv2td1kB_t6Gs:APA91bEaREBt07CWiEyGvP4YAGjxmVQmF0IcXgef5XcvL5KWrHsqcxZZ8L9PqwGzKTPFGy6cdmuVXSvg6kDQjj-652jt5_jbbKMhUFTcam_-FeBp2vGZvBjaBd4aAOtQf1m48htQ8d6B, authorizedEntity: 255558254149, scope:*
2020-01-17 18:48:09.987764-0800 native[4462:1287461] -[RNFirebaseMessaging messaging:didReceiveRegistrationToken:] [Line 86] Received new FCM token: dUY5psWDnkv2td1kB_t6Gs:APA91bEaREBt07CWiEyGvP4YAGjxmVQmF0IcXgef5XcvL5KWrHsqcxZZ8L9PqwGzKTPFGy6cdmuVXSvg6kDQjj-652jt5_jbbKMhUFTcam_-FeBp2vGZvBjaBd4aAOtQf1m48htQ8d6B
2020-01-17 18:48:09.993088-0800 native[4462:1287610] 6.15.0 - [Firebase/InstanceID][I-IID003010] Successfully fetched default token.
2020-01-17 18:48:09.993755-0800 native[4462:1287610] 6.15.0 - [Firebase/InstanceID][I-IID003008] Got default token dUY5psWDnkv2td1kB_t6Gs:APA91bEaREBt07CWiEyGvP4YAGjxmVQmF0IcXgef5XcvL5KWrHsqcxZZ8L9PqwGzKTPFGy6cdmuVXSvg6kDQjj-652jt5_jbbKMhUFTcam_-FeBp2vGZvBjaBd4aAOtQf1m48htQ8d6B

有趣的是,删除当前版本的应用程序并安装了最新版本(在以前的日志中为更新版本)后,我们可以看到相反的过程,首先是找到我的当前令牌,并认为它不再新鲜:]

messaging:didReceiveRegistrationToken:] [Line 86] Received new FCM token: dUY5psWDnkv2td1kB_t6Gs:APA91bEaREBt07CWiEyGvP4YAGjxmVQmF0IcXgef5XcvL5KWrHsqcxZZ8L9PqwGzKTPFGy6cdmuVXSvg6kDQjj-652jt5_jbbKMhUFTcam_-FeBp2vGZvBjaBd4aAOtQf1m48htQ8d6B
2020-01-17 19:03:06.651179-0800 native[4475:1291698] 6.15.0 - [Firebase/InstanceID][I-IID014012] Invalidating cached token for 255558254149 (*) due to token is no longer fresh.

随后将加载新令牌,并将其视为默认令牌,而我的新安装将立即接收FCM通知:

2020-01-17 19:03:07.997209-0800 native[4475:1291564] -[RNFirebaseMessaging messaging:didReceiveRegistrationToken:] [Line 86] Received new FCM token: ebz2ACPpBkg0kGsgs9yF7_:APA91bGErCaPMuLyRk-_BLZXUk8_U6FyxvKHbI0NPgddFWl_-nLZuCc6HbHg8kaLMDJiO7sHFS8THAuV132xgri8uQ9YV4g8zDXJySrKsSTNiDq9HcXpzUQXQlPy8bTaxZ3gyRxyCy3p
2020-01-17 19:03:08.018870-0800 native[4475:1291684] 6.15.0 - [Firebase/InstanceID][I-IID014001] Token fetch successful, token: ebz2ACPpBkg0kGsgs9yF7_:APA91bGErCaPMuLyRk-_BLZXUk8_U6FyxvKHbI0NPgddFWl_-nLZuCc6HbHg8kaLMDJiO7sHFS8THAuV132xgri8uQ9YV4g8zDXJySrKsSTNiDq9HcXpzUQXQlPy8bTaxZ3gyRxyCy3p, authorizedEntity: 255558254149, scope:*
2020-01-17 19:03:08.019018-0800 native[4475:1291684] 6.15.0 - [Firebase/InstanceID][I-IID003010] Successfully fetched default token.
2020-01-17 19:03:08.019065-0800 native[4475:1291684] 6.15.0 - [Firebase/InstanceID][I-IID003008] Got default token ebz2ACPpBkg0kGsgs9yF7_:APA91bGErCaPMuLyRk-_BLZXUk8_U6FyxvKHbI0NPgddFWl_-nLZuCc6HbHg8kaLMDJiO7sHFS8THAuV132xgri8uQ9YV4g8zDXJySrKsSTNiDq9HcXpzUQXQlPy8bTaxZ3gyRxyCy3p

刚刚在日志中找到此利息声明:

在检索发件人ID为'255558254149'的FCM令牌之前未设置APNS设备令牌。不会通过APNS传递对此FCM令牌的通知。一旦设置了APNS设备令牌,请确保重新检索FCM令牌。

很难相信这会持续发生,但是确实如此,任何帮助将不胜感激。

[在此问题上进行了大量研究后,首先我的设置是:React-native:0.61.5 react-native-firebase:5.6.0 Firebase Messaging 6.15.0我的问题很简单明了,尽管我没有.. 。

ios reactjs firebase react-native react-native-ios
1个回答
0
投票

它最终成为比赛条件,我发现了一个很好的提示here

© www.soinside.com 2019 - 2024. All rights reserved.