我有一个带有React Native Firebase的React Nation应用程序,用于推送通知/云消息。所以一般来说一切都很好,但iOS版本有一个问题。
问题是,我收到的FCM令牌(const fcmToken = await messaging().getToken()
(有时是有效的并且有效,有时我会因为NotRegistered
而出错。
我的测试很简单。我上传了一个版本到TestFlight。当我现在安装这个版本的应用程序几次时,收到的FCM令牌有时有效,有时无效。相同的代码,相同的密钥/证书,相同的设备。
此外,检查APNS令牌,这似乎是有效的,每次我检查时都能正常工作。
- 我确保在
[FIRApp configure];
启动时安装了Firebase应用程序 - 我检查了应用程序是否在APNS注册
- 我查看了另一部iPhone(结果相同(
当令牌有时有效,有时无效时,可能会出现什么问题?
非常感谢任何提示🙏
系统信息:
System:
OS: macOS 10.15.6
CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 557.23 MB / 16.00 GB
Shell: 3.0.2 - /usr/local/bin/fish
Binaries:
Node: 14.5.0 - /var/folders/bn/f6trf3q55vj_hjplf9vy9ls00000gn/T/yarn--1598005931689-0.20174739828176125/node
Yarn: 1.22.4 - /var/folders/bn/f6trf3q55vj_hjplf9vy9ls00000gn/T/yarn--1598005931689-0.20174739828176125/yarn
npm: 6.14.5 - ~/.nodenv/shims/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.6, DriverKit 19.0, macOS 10.15, tvOS 13.4, watchOS 6.2
Android SDK:
API Levels: 28, 29
Build Tools: 28.0.3, 29.0.2
System Images: android-28 | Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: 3.6 AI-192.7142.36.36.6392135
Xcode: 11.6/11E708 - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_232 - /usr/bin/javac
Python: 2.7.16 - /usr/bin/python
npmPackages:
@react-native-community/cli: Not Found
react: 16.13.1 => 16.13.1
react-native: 0.63.2 => 0.63.2
npmGlobalPackages:
*react-native*: Not Found
fcm发送NotRegistered状态,因为如果您关闭基于ios的应用程序,fcm和应用程序的状态将断开。
因此,当您通过执行getToken函数获得令牌值时,您将获得旧的令牌值,而不是新的刷新令牌。
因此,如果您执行以下代码,并使用刷新令牌值再次执行post-message,则可以正常接收消息。
const getToken = async () => {
const oldToken = await messaging().getToken();
await messaging().deleteToken(String(${fcm_send_id}), '*');
const newToken = await messaging().getToken();
if (oldToken === newToken) {
console.log('not refresh')
} else {
return newToken;
}
};