didRegisterForRemoteNotificationsWithDeviceToken何时被调用?

关于didRegisterForRemoteNotificationsWithDeviceToken有很多问题,但他们都回避了一个非常直接的问题,我似乎无法find确切的答案。

对于以其他方式正确设置通知并具有适当networking连接的应用程序:什么时候调用了RegistryRemoteNotificationsWithDeviceToken? 一些可能的select可能是:

  1. 每次应用程序启动
  2. 只有在初始提示后才能接受推送通知
  3. 别的东西?

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

(空隙)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

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

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

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

编辑:应用程序:didRegisterForRemoteNotificationsWithDeviceToken仍然被调用后第一个注册后。

当应用程序第一次运行时,它会询问用户是否允许远程通知。 如果他们说是的,那么它会在当时触发didRegisterForRemoteNotificationsWithDeviceToken,并且每当它第一次打开应用程序时就会触发这个函数。 如果他们说不,那么它将不会被解雇,除非他们进入设置,并允许在应用程序的通知。

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

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

  • 如果没有连接,请检查您的networking连接。

欲了解更多信息检查链接