处理没有网络连接的APNS推送令牌

时间:2013-07-03 14:29:01

标签: ios cocoa-touch push-notification apple-push-notifications

大多数文档建议在启动时注册远程通知,并在收到令牌后,将其推送到具有任何其他应用程序特定设置的服务器(例如,用户,应用内推送设置)。但是,我不知道如何处理以下的案例。

如果用户在没有连接的情况下启动应用,则不会收到任何令牌。片刻之后,恢复连接。用户尝试更改应用程序中的某些设置,这应该向我的服务器提示包括设置和令牌的帖子。但是,令牌仍然是零。

相反,在尝试发布设置之前,每次注册通知会不会更好?似乎没有必要在启动时请求此令牌,因为它可能不需要,更糟糕的是,当需要 时可能是nil。

2 个答案:

答案 0 :(得分:1)

我认为在应用启动时注册推送通知仍然是最佳选择。获得设备令牌后,您无需立即将其发送到服务器。您可以将其本地存储在设备上。当您的逻辑需要将设备令牌(以及其他设置)发送到您的服务器时,获取本地保存的令牌。如果保存的令牌为空,请尝试再次注册,并在获得令牌后将令牌发送到您的服务器。

请注意,当应用程序启动时,您应该注册推送通知,即使您拥有以前本地存储的设备令牌(由于Apple决定更改设备令牌的可能性很小)。

答案 1 :(得分:1)

Apple建议您每次应用程序到达前台时(无论是打开它还是从后台返回时)都应该注册。

此调用不仅仅用作获取推送通知令牌的方式,还让Apple知道此应用程序仍然对接收推送通知感兴趣。如果您只调用此方法一次,或者很少而且您不经常发送推送通知,则可能会遇到这样一种情况,即您一直使用的令牌,存储在服务器上的令牌不再是有效令牌(足够之后)时间已过,没有设备确认令牌,苹果将不再认为令牌有效。)

相关问题