【问题标题】:Firebase notification not arriving on iOS for FCM token with length 163长度为 163 的 FCM 令牌的 Firebase 通知未到达 iOS
【发布时间】:2020-11-04 17:06:25
【问题描述】:

我正在开发一个 react native 项目,该项目使用 FCM 令牌根据配置文件注册手机(不使用 Firebase 身份验证)。

对于 android,生成的 FCM 令牌长度为 152,当我使用 Firebase Admin SDK 发送通知时,我会收到通知。

但对于 iOS,生成的 FCM 令牌的长度为 163。在使用相同的 Java 代码发送通知时,我收到 "errorCode": "UNREGISTERED""message": "Requested entity was not found." 的 404 错误

Xcode 中添加了推送通知功能。如果应用程序处于前台、后台或关闭状态,通知侦听器也可以处理通知。

我已尝试卸载然后安装该应用程序。即使生成了新的 FCM 令牌,结果也是一样的。另一方面,对于某些 iOS 设备(相同的 iOS 版本),会生成长度为 152 的 FCM 令牌,我可以向这些 iPhone 发送通知。我无法找出在某些 iOS 设备上导致此问题的原因。

预期: 通知同时到达 Android 和 iOS 设备
实际结果:
通知到达 android。
通知到达 FCM 令牌长度为 152 的 iOS 设备。
通知未到达在 iOS 设备上,FCM 令牌长度为 163

这是我的配置:
常规:
iOS:13.5.1
型号:iPhone XR
反应原生:0.62.2

Package.json:
"react-native-firebase": "^5.6.0",

Podfile:
吊舱“Firebase/Core”、“5.20.2”
pod 'Firebase/Messaging', '5.20.2'

Android/app build.gradle:
实施“com.google.firebase:firebase-core:16.0.8”
实施“com.google.firebase:firebase-messaging:17.6.0”

【问题讨论】:

    标签: ios firebase react-native firebase-cloud-messaging react-native-firebase


    【解决方案1】:

    搞定了。对于那些可能面临这个问题的人来说,问题在于使用 NativeManager 来获取 FCM 令牌。
    以前我是这样获取令牌的:

    nativeManager.getTokenString(CONSTANT_FCM_TOKEN, (fcmToken) => {...});
    

    改成:

    fcmToken = await firebase.messaging().getToken();
    

    使用 firebase.messaging().getToken(),首先接收到一个 FCM 令牌,然后再次 RNFirebaseMessaging messaging:didReceiveRegistrationToken 返回一个新令牌。新令牌就是要使用的令牌。

    使用 NativeManager,只返回第一个令牌,这不是正确的令牌。

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 2016-09-24
      • 2021-05-11
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多