如果APNS设备令牌过期会发生什么?

use*_*567 7 objective-c push-notification apple-push-notifications

根据这个论坛帖子APNS设备令牌是否曾经改变,一旦创建?设备令牌可能会过期,或者APNS可能会更改设备令牌.我的问题是,如果服务器将此过期令牌发送给Apple,APNS是否会使用过期令牌进行通知?APNS可以将此过期令牌用于其他设备吗?

Era*_*ran 11

我从来没有遇到过期的设备令牌,所以我无法从我的个人经历中告诉你.我也无法从Apple的APNS文档中告诉您,因为他们没有回答您的问题(我不止一次阅读他们所有的APNS文档).

无论您的问题的答案是什么,您的应用和服务器都应该能够处理设备令牌到期.

  1. 始终registerForRemoteNotificationTypes在启动应用程序时调用,并将设备令牌发送到服务器(如果它与应用程序在该设备上获得的最后一个设备令牌不同).

  2. 在服务器中为使用您的应用的每个设备分配另一个唯一标识符.让应用程序将该标识符与设备令牌一起发送到您的服务器.这样,如果设备令牌发生更改,您的服务器将知道它是现有设备的新设备令牌,而不是安装了应用程序的新设备.

  3. 关注#1和#2将确保您的服务器将拥有最近启动您的应用的每个设备的当前设备令牌(在最近未启动您的应用的设备上,用户可能不关心您的应用,所以我不确定发送推送通知会有什么不同).

  4. 如果您确实向旧设备令牌发送通知,如果它有效,一切都很好.如果没有,您将获得无效令牌错误响应,或者您将在反馈服务中获得该设备令牌.在这两种情况中的任何一种情况下,您都应该停止向该令牌发送通知.

  5. 我假设APNS不会将过期的令牌重复用于其他设备,但如果确实如此,您的服务器可以使用我在#2中建议的唯一标识符来识别它.在这种情况下,请确保您的服务器仅将设备令牌分配给其他设备.

  • 问题是这个唯一标识符是如何维护的?如果用户安装/卸载应用程序,则此唯一标识符将丢失.如果更新操作系统,则此唯一标识符(以及符合上述链接的设备令牌)将丢失.设备中是否有任何唯一的密钥永远不会改变并保持该设备的唯一性? (4认同)