请求设备令牌

时间:2012-11-30 19:47:47

标签: iphone ios ipad push-notification

在处理推送通知时,didRegisterForRemoteNotificationsWithDeviceToken执行注册设备通知和接收我们之后可以使用的deviceToken的工作,但是如果在应用启动并且didRegisterForRemoteNotificationsWithDeviceToken运行时没有互联网会发生什么?

有没有办法强制didRegisterForRemoteNotificationsWithDeviceToken再次运行并接收令牌?

感谢

1 个答案:

答案 0 :(得分:2)

您应该阅读本技术说明:TN2265 - Troubleshooting Push Notifications

它说:

  

安装第一个支持推送功能的应用时,iOS或Mac OS X会尝试   建立与推送服务的持久网络连接   将由系统上所有支持推送的应用程序共享。如果没有   委托回调   application:didRegisterForRemoteNotificationsWithDeviceToken:也不是   application:didFailToRegisterForRemoteNotificationsWithError:is   被叫,这意味着此连接尚未建立。

     

这不一定是错误条件。系统可能没有   因特网连接超出任何小区的范围   塔或Wi-Fi接入点,或者它可能处于飞行模式。的相反   将此视为错误,您的应用应该继续正常,   仅禁用依赖推送通知的功能。

     

请注意,网络可用性可能会经常变化。一旦   与推送服务的持久连接成功,其中之一   将调用之前提到的应用程序委托方法。

每次应用程序启动时都应调用registerForRemoteNotificationTypes,即使没有网络连接也是如此。推送框架处理其余部分。在didRegisterForRemoteNotificationsWithDeviceToken中,您将令牌发送到您的服务器(如果尚未发送或令牌已更改)。

同时检查Local and Push Notification Programming Guide

  

通过请求设备令牌并将其传递给提供者   您的应用程序启动时,您可以帮助确保提供程序   拥有设备的当前令牌。如果用户将备份还原到   设备或计算机,而不是为其创建备份的设备或计算机   (例如,用户将数据迁移到新设备或计算机),他   或者她必须至少启动一次申请才能收到   再次通知。如果用户将备份数据还原到新设备   或计算机,或重新安装操作系统,设备令牌   变化。此外,永远不要缓存设备令牌并将其提供给您   供应商;始终在需要时从系统获取令牌。   如果您的申请已经注册,请致电   registerForRemoteNotificationTypes:操作系统中的结果   将设备令牌立即传递给代理人而不会产生任何影响   额外的开销。