我正在开发一些 iOS 应用程序,它们都属于同一个发布者,都启用了推送通知。当我打电话时registerForRemoteNotificationTypes
,我会提示用户允许或禁止推送通知,但在用户选择选项之前application:didRegisterForRemoteNotificationsWithDeviceToken:
,我会使用令牌数据进行调用。当他们按 OK 时,它会再次被调用。这是正常的吗?
另请注意:多个应用程序在同一设备上运行时似乎获得相同的令牌。
我正在开发一些 iOS 应用程序,它们都属于同一个发布者,都启用了推送通知。当我打电话时registerForRemoteNotificationTypes
,我会提示用户允许或禁止推送通知,但在用户选择选项之前application:didRegisterForRemoteNotificationsWithDeviceToken:
,我会使用令牌数据进行调用。当他们按 OK 时,它会再次被调用。这是正常的吗?
另请注意:多个应用程序在同一设备上运行时似乎获得相同的令牌。
这是来自 Apple 文档。
当您发送此消息时,设备将启动 Apple Push Service 的注册过程。如果成功,则应用程序委托在 application:didRegisterForRemoteNotificationsWithDeviceToken: 方法中接收设备令牌;如果注册不成功,则通过 application:didFailToRegisterForRemoteNotificationsWithError: 方法通知委托。如果应用程序委托接收到设备令牌,它应该与其提供者连接并将令牌传递给它。
和
启用推送的应用第一次注册推送通知时,iOS 会询问用户是否希望接收该应用的通知。一旦用户对此警报做出响应,除非设备已恢复或应用程序已卸载至少一天,否则它不会再次显示。
我认为你所观察到的是正常的。没有提及application:didRegisterForRemoteNotificationsWithDeviceToken
只有在用户授予权限时才会调用。我认为您可以通过在 NSUserDefaults 中缓存设备令牌来优化它,并在此方法中检查新令牌是否不等于缓存令牌。
这是一个老问题,但我刚刚遇到这个问题,它似乎与远程通知后台模式有关。application:didRegisterForRemoteNotificationsWithDeviceToken
仅在打开此后台模式时在接受推送通知权限之前在我的 iPhone 上调用。