我正在尝试通过谷歌云函数为 iOS 发送推送通知,但它返回的错误是The provided registration token is not registered
.但是我已经通过调试我的应用程序进行了检查,并且 FCM 注册令牌是正确的。之后,我尝试通过提供FCM令牌通过Firebase控制台向单个设备发送推送通知,但由于Unregistered registration token
而失败。这是如何发生的,因为设备 FCM 令牌没有问题?
我认为这应该是一些粗心的错误,您应该确保以下事项:
-
令牌与
-[FIRMessagingDelegate messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken]
相同 -
GoogleService-Info.plist
是从具有 Firebase 推送控制台的同一帐户下载的。 -
已更新至最新的 Firebase SDK。
来自谷歌Firebase文档的一些描述你的错误The provided registration token is not registered
。
提供的注册令牌未注册。以前有效的 注册令牌可以出于各种原因取消注册, 包括:
- 客户端应用从 FCM 中取消注册自身。
- 客户端应用已自动取消注册。如果用户卸载应用程序,或者在 iOS 上,如果 APNS 反馈 服务将 APNS 令牌报告为无效。
- 注册令牌已过期。例如,Google 可能决定刷新注册令牌,或者 iOS 上的 APNS 令牌可能已过期。 设备。
- 客户端应用已更新,但新版本未配置为接收消息。对于所有这些情况,请删除此注册令牌 并停止使用它发送消息。
我也遇到了类似的错误。像这样的东西。
FirebaseMessagingError: The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.
所以我简单地生成了一个新令牌并将其替换为旧令牌。
它开始正常工作。
我在发布的构建iOS设备上也遇到了类似的错误。
The provided registration token is not registered. A previously valid registration token can be unregistered for a variety of reasons. See the error documentation for more details. Remove this registration token and stop using it to send messages.
我通过在火力基础消息中重新上传正确的.p12 证书来修复它
我收到了来自 Firebase 支持团队的邮件:
"在您的情况下,请注意,您最多只能上传 2 个 APN 证书。一个用于开发,另一个用于生产。由于其中一个 APN 证书无效,因此您应该删除不正确的证书。为了能够删除 APN 证书,用户必须具有"所有者"权限/角色。检查后,您没有足够的权限进行此更改。 我建议您联系项目所有者以请求必要的权限或删除 APN 证书。
补充一点,从 I/O 2017 开始,开发人员可以为他们的 APN 使用身份验证密钥或证书。我们建议您使用身份验证密钥,因为它们更易于配置且不会过期。如果同时上传了证书和身份验证密钥,我们的服务器将使用身份验证密钥。
我们的系统无法像验证证书那样验证身份验证密钥。我们无法在不发送实际消息的情况下验证 APNs 是否会接受它们。对于证书,我们在接受 APNs 之前打开与它们的连接,如果它们是无效的 APN,我们会拒绝它们,我们可以将错误返回给用户。
我遇到了这个问题,结果发现我们的服务器为某个用例发送了错误的通知有效负载。 发生这种情况时,Firebase 将发送返回代码 400 并取消注册令牌。
我们的解决方法是修复发送错误有效负载的用例。 我们的有效负载中的错误是由于"DeviceTokenNotForTopic"造成的。 请务必检查在进入此错误状态之前发布通知时是否没有收到错误。