8

我正在开发一些 iOS 应用程序,它们都属于同一个发布者,都启用了推送通知。当我打电话时registerForRemoteNotificationTypes,我会提示用户允许或禁止推送通知,但在用户选择选项之前application:didRegisterForRemoteNotificationsWithDeviceToken:,我会使用令牌数据进行调用。当他们按 OK 时,它会再次被调用。这是正常的吗?

另请注意:多个应用程序在同一设备上运行时似乎获得相同的令牌。

4

2 回答 2

6

这是来自 Apple 文档。

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

启用推送的应用第一次注册推送通知时,iOS 会询问用户是否希望接收该应用的通知。一旦用户对此警报做出响应,除非设备已恢复或应用程序已卸载至少一天,否则它不会再次显示。

我认为你所观察到的是正常的。没有提及application:didRegisterForRemoteNotificationsWithDeviceToken 只有在用户授予权限时才会调用。我认为您可以通过在 NSUserDefaults 中缓存设备令牌来优化它,并在此方法中检查新令牌是否不等于缓存令牌。

于 2013-03-20T16:42:10.273 回答
2

这是一个老问题,但我刚刚遇到这个问题,它似乎与远程通知后台模式有关。application:didRegisterForRemoteNotificationsWithDeviceToken仅在打开此后台模式时在接受推送通知权限之前在我的 iPhone 上调用。

于 2017-01-13T18:08:00.667 回答