根据此论坛帖子Does the APNS device token ever change, once created?设备令牌可能已过期或APNS可能会更改设备令牌。我的问题是,如果服务器将此过期令牌发送给Apple,APNS是否会使用过期令牌进行通知? APNS可以将此过期令牌用于其他设备吗?
答案 0 :(得分:11)
我从未遇到过期的设备令牌,所以我不能从我的个人经历中告诉你。我也不能从Apple的APNS文档中告诉你,因为他们没有回答你的问题(我不止一次阅读他们所有的APNS文档)。
您的应用和服务器应该能够处理设备令牌过期,无论您的问题的答案是什么。
启动应用时始终致电registerForRemoteNotificationTypes
,如果设备令牌与应用在该设备上获得的最后一个设备令牌不同,则将设备令牌发送到服务器。
在服务器中为使用您的应用的每台设备分配另一个唯一标识符。让应用程序将该标识符与设备令牌一起发送到您的服务器。这样,如果设备令牌发生变化,您的服务器就会知道它是现有设备的新设备令牌,而不是安装了应用程序的新设备。
关注#1和#2将确保您的服务器将拥有最近启动您的应用的每台设备的当前设备令牌(在最近未启动您的应用的设备上,用户可能不会'我非常关心你的应用,所以我不确定发送推送通知会有所不同。
如果您确实向旧设备令牌发送通知,如果它有效,一切都很好。如果没有,您将获得无效令牌错误响应,或者您将在反馈服务中获得该设备令牌。在这两种情况中,您应该停止向该令牌发送通知。
我假设APNS不会将过期的令牌重复用于其他设备,但如果确实如此,您的服务器可以使用我在#2中建议的唯一标识符来识别它。在这种情况下,请确保您的服务器仅将设备令牌分配给其他设备。