提供的注册令牌未注册

问题描述 投票:0回答:5

我正在尝试通过 Google 云功能发送 iOS 推送通知,但它返回错误

The provided registration token is not registered
。但我已经通过调试我的应用程序进行了检查,并且 FCM 注册令牌是正确的。之后,我尝试通过提供 FCM 令牌通过 Firebase 控制台向单个设备发送推送通知,但由于
Unregistered registration token
而失败。由于设备 FCM 令牌没有问题,这是怎么发生的?

ios objective-c firebase apple-push-notifications firebase-cloud-messaging
5个回答
7
投票

我认为这应该是一些粗心的错误,你应该确定以下几点:

  1. 代币与

    -[FIRMessagingDelegate messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken]

  2. 相同
  3. GoogleService-Info.plist
    是通过您的 Firebase 推送控制台从同一帐户下载的。

  4. 已更新至最新的 Firebase SDK。

来自 Google Firebase 文档 是对您的错误的一些描述

The provided registration token is not registered

提供的注册令牌未注册。之前有效的 注册令牌可能因多种原因而被取消注册, 包括:

  • 客户端应用程序已从 FCM 取消注册。
  • 客户端应用程序已自动注销。如果用户卸载应用程序,或者在 iOS 上,如果 APNS 反馈 服务报告 APNS 令牌无效。
  • 注册令牌已过期。例如,Google 可能决定刷新注册令牌,或者 iOS 的 APNS 令牌可能已过期 设备。
  • 客户端应用程序已更新,但新版本未配置为接收消息。对于所有这些情况,请删除此注册令牌 并停止使用它发送消息。

1
投票

我也遇到类似的错误。像这样的东西。

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.

所以我只是生成了一个新令牌并将其替换为旧令牌。

它开始工作正常。


1
投票

我遇到了这个问题,结果发现我们的服务器针对特定用例发送了错误的通知负载。 发生这种情况时,Firebase 将发送返回代码 400 并取消注册令牌。

我们的解决方案是修复发送错误有效负载的用例。 我们的有效负载中的错误是由于“DeviceTokenNotForTopic”造成的。 在陷入这种糟糕的状态之前,请务必检查您在发布通知时是否收到错误。


0
投票

我在已发布的构建 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.

我通过在 firebase 消息传递上重新上传正确的 .p12 证书来修复它

我收到了来自 Firebase 支持团队的邮件:

“就您的情况而言,请注意,您最多只能上传 2 个 APN 证书。一个用于开发,另一个用于生产。由于其中一个 APN 证书无效,您应该删除不正确的一个。要能够删除 APN证书,用户必须具有“所有者”权限/角色经检查,您没有足够的权限进行此更改,我建议您联系项目所有者以请求必要的权限或删除 APN 证书。

补充一下,从 I/O 2017 开始,开发人员可以为其 APN 使用身份验证密钥或证书。我们建议您使用身份验证密钥,因为它们更易于配置并且不会过期。如果同时上传了证书和身份验证密钥,我们的服务器将使用身份验证密钥。

我们的系统无法像验证证书那样验证身份验证密钥。我们没有办法在不发送实际消息的情况下验证 APN 是否会接受它们。使用证书,我们在接受 APN 之前打开与 APN 的连接,如果它们是无效的 APN,则拒绝它们,我们可以将错误返回给用户。”


0
投票

我们尝试在 iOS 模拟器而不是实际设备上对其进行测试。当我们切换到在真实设备上进行测试时,我们立即收到了通知。

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