是什么导致 APNS 令牌发生变化?

What causes APNS token to change?

沙盒上的令牌生命周期与生产环境之间有区别吗?

我目前无法使用沙盒环境,想知道是什么导致我的令牌 expire/reset。

我不会卸载应用程序,也不会在明显的令牌过期之间更新 iOS 版本。

作为 dev/testing.

的一部分,我强制关闭应用程序并将其设置为后台

我也在使用我认为对生产和沙箱都有效的 VoIP 证书。

iOS 设备上 运行 的应用是直接从 Xcode 构建和推送的。


似乎正在发生的事情是,在应用程序不再 运行 接收设备上和它应该接收推送通知之间的某个时间令牌会发生变化。在此之前,应用程序没有机会 运行 更新令牌。

关于什么使 APNS 令牌无效的内容没有完整记录,文档确实提到了:

If the user restores backup data to a new device or computer, or reinstalls the operating system, the device token changes.

但是,我认为这些并不是导致令牌过期的唯一情况。 记录的事实是,您不应缓存令牌,而应始终在需要时从系统中提取令牌。

Registering for Remote Notifications,具体为:

Moreover, never cache a device token and give that to your provider; always get the token from the system whenever you need it. If your app has previously registered, calling registerForRemoteNotifications results in the operating system passing the device token to the delegate immediately without incurring additional overhead. Also note that the delegate method may be called any time the device token changes, not just in response to your app registering or re-registering.