5

调用 didRegisterForRemoteNotificationsWithDeviceToken 时,iOS 是否会触发 NSNotification(包含 deviceToken)?

我知道我总是可以从 AppDelegate 中将令牌保存在 NSUserDefaults 中并在任何地方访问它,但我想知道是否有更好的方法。我在想一些类似于 UIApplicationDidEnterBackgroundNotification 的东西。

更新:如果我想获取设备令牌而不在 AppDelegate 中实现该委托方法的用例。

4

2 回答 2

3

不,您需要实施 didRegisterForRemoteNotificationsWithDeviceToken 。我想在这种情况下反对 NSNotification 的一个论点是,您需要使用 didFailToRegisterForRemoteNotificationsWithError 智能地处理失败场景。

于 2013-10-28T21:31:35.143 回答
1

无法正确理解您的问题。

 - (void)application:(UIApplication *)application  
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken 

这是当应用程序成功注册到 APNS 服务器从而获得设备令牌时由 iOS 堆栈(即您的应用程序委托)调用的方法。

(这假设您已通过实施为您的应用注册推送通知)

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types.

通常,需要随后将此设备令牌发送到他的推送通知有效负载生成服务器以向服务器注册他的设备。这可以在“didRegisterForRemoteNotificationsWithDeviceToken”中完成。因此,我真的认为不需要将令牌存储在任何地方。另外,请注意,应用程序每次启动时都会从 APNS 服务器注册并获取设备令牌(通常不是在从后台到前台的过程中,但这取决于您的实现)。

于 2013-10-28T21:31:12.920 回答