【问题标题】:"Invalid Token" while sending PushKit notification in production environment在生产环境中发送 PushKit 通知时出现“Invalid Token”
【发布时间】:2017-07-03 15:31:28
【问题描述】:

我尝试通过 PushKit 发送 VoIP 通知,但在生产(分发)环境中,我从服务器收到“无效令牌”。

在具有相同证书和 url:ssl://gateway.sandbox.push.apple.com 和端口:2195 的开发环境中一切正常 但是当我将 url 更改为:ssl://gateway.push.apple.com 时,我收到“Invalid Token”错误,没有额外的数据

【问题讨论】:

  • 检查您的 p12 文件是用于开发还是分发
  • @AbhishekThapliyal VoIP Services Certificate 只有一种类型的证书,该证书应该适用于两种环境。
  • 苹果有这个发行和开发证书,即使是普通的APNS也有两种发行和开发,请再次检查
  • @AbhishekThapliyal 在developer.apple.comCertificates, Identifiers & Profiles 部分,当我尝试添加新证书时,VoIP 服务VoIP Services Certificate: Establish connectivity between your notification server, the Apple Push Notification service sandbox, and production environment to alert background VoIP apps of incoming activity. A separate certificate is required for each app you distribute. 的“生产”部分只有一个选项

标签: ios apple-push-notifications voip pushkit


【解决方案1】:

看起来您正在使用客户端在沙盒环境中为沙盒和生产环境生成的相同 Voip 设备令牌。这就是您将收到无效令牌错误的原因。

这行不通。如果您想使用生产环境,您需要确保您的客户端/应用程序正在生产环境中创建设备令牌。 (当您的服务器使用生产环境时,您不能使用客户端使用 Sandbox 生成的设备令牌)

Pl。请注意,为同一设备上的同一应用程序/客户端的沙盒/生产环境生成单独的设备令牌。希望对您有所帮助。

【讨论】:

  • 感谢您的回答,但我已经在生产环境中使用生产令牌,我还发现了一些奇怪的行为,对于某些令牌,我没有收到这个 Invalid Token 错误。我尝试将推送发送到三个不同的设备(到他们的生产令牌,全部从 testFlight 安装),其中两个我收到错误,但另一个成功!
  • 只有当生产服务器没有将该令牌分配给任何设备时,生产 APNS 才会返回无效令牌错误。如果您确定客户端应用程序仅使用生产 APNS 请求了此设备令牌,那么 APNS 应该能够路由此目的地的通知。这很奇怪。绝不能发生。你所说的是如果属实,看起来像是 APNS 服务器上的一些设备令牌同步问题(我们不希望 Apple 服务器在本质上出现这种情况)。
  • 我还建议您确保 - 您的应用程序没有缓存任何设备令牌。您的应用程序可能无法注册新的生产设备令牌并返回缓存的设备令牌。 (只是一个猜测)。我相信您已经确保您的所有设备(应用程序)都仅使用生产证书进行捆绑。
  • 感谢和抱歉我的延迟回答,我已经找到了问题,但我没有将其发布为答案,因为我不确定我是否正确。在 testFlight 上遇到此问题数天后,我在 App Store 上发布了该应用程序,没有任何更改,并且它现在可以工作了!没有无效的令牌错误。我想也许当应用程序在试飞时,苹果表现得有点随机,有时会在生产环境和 s.t 开发中注册设备(仍然不确定),所以也许 testFlight 应该被忽略,希望一切都能正常工作应用商店!
  • 我的应用也有类似的问题。当我在我的 Testflight 版本(使用生产)和侧载应用程序(沙盒)之间切换时,我在第一次启动应用程序时获得了错误环境的令牌。这实际上是旧令牌。当我杀死应用程序并再次重新启动它时,我会检索正确令牌的令牌。我通过func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) 回调检索令牌。不幸的是我没有找到解决方案,但这只是一个开发问题。
猜你喜欢
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多