什么时候调用didRegisterForRemoteNotificationsWithDeviceToken?

时间:2012-06-11 15:52:43

标签: ios notifications apple-push-notifications

关于didRegisterForRemoteNotificationsWithDeviceToken存在很多问题,但是他们都回避了一个非常直接的问题,我似乎找不到确切的答案。

对于通过其他所有方式正确设置通知并具有正确网络连接的应用程序:何时调用didRegisterForRemoteNotificationsWithDeviceToken?一些可能的选择可能是:

  1. 每次应用启动时
  2. 仅在初始提示用户接受推送通知后
  3. 别的什么?

3 个答案:

答案 0 :(得分:28)

在您的UIApplication中调用此方法后,应用程序委托将在成功注册远程通知后调用该方法:

  

(无效)registerForRemoteNotificationTypes:(UIRemoteNotificationType)类型

根据:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

  

发送此消息时,设备会使用Apple Push Service启动注册过程。如果成功,则应用程序委托在应用程序中接收设备令牌:didRegisterForRemoteNotificationsWithDeviceToken:方法;如果注册不成功,则通过应用程序:didFailToRegisterForRemoteNotificationsWithError:方法通知代理。如果应用程序委托收到设备令牌,它应该与其提供者连接并将令牌传递给它。

现在,进一步详细说明,通常应用程序会在您的应用程序委托中的 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中调用 registerForRemoteNotificationTypes 。因此,应用程序:didRegisterForRemoteNotificationsWithDeviceToken 通常在应用程序启动后的瞬间被称为。

编辑:应用程序:didRegisterForRemoteNotificationsWithDeviceToken仍然会在第一个之后调用子句注册。

答案 1 :(得分:8)

首次运行应用程序时,它会询问用户是否允许远程通知。如果他们说是,那么它将在当时触发didRegisterForRemoteNotificationsWithDeviceToken,并且每次在应用程序首次打开时触发此功能。如果他们拒绝,那么除非他们进入设置并允许在应用程序上发送通知,否则不会被解雇。

答案 2 :(得分:1)

可能有很多原因,检查一些原因

  • 如果您在模拟器中运行应用程序,则 application:didFailToRegisterForRemoteNotificationsWithError:方法 将被调用,因为不支持推送通知 模拟器。

  • 如果没有连接,请检查您的deice网络连接。

有关详情,请查看Link