如果用户拒绝启用推送通知,我们将通过didFailToRegisterForRemoteNotificationsWithError收到错误。在这种情况下,是否有人知道NSError对象中的代码是什么(区别于没有可用的连接)?
答案 0 :(得分:20)
我认为你的初始陈述(总是)是正确的。如果使用有效的配置文件正确签署了应用,则无论“设置”应用中的用户“通知”选项如何,调用registerForRemoteNotificationTypes:
都会生成application:didRegisterForRemoteNotificationsWithDeviceToken:
。根据我的经验,我看到application:didFailToRegisterForRemoteNotificationsWithError:
被调用的唯一一次是因为应用程序签名不正确。有问题的错误提到“没有为申请找到有效的aps-环境权利”。
答案 1 :(得分:20)
虽然这个问题已经过去了,并且同意@ Jerred的大部分答案,但我还是想发布更新的答案。
线程中主要问题的答案是否。
应用程序:在使用错误的配置文件签名应用程序时调用didFailToRegisterForRemoteNotificationsWithError:。
此外,
应用程序:didRegisterForRemoteNotificationsWithDeviceToken:仅在用户启用应用程序的通知中心(在“设置”应用程序中)中的至少一个徽章,横幅/警报或声音设置时才会被调用。
有些情况下iOS不会调用其中任何一种方法
答案 2 :(得分:1)
根据我的经验,didFailToRegisterForRemoteNotificationsWithError:
方法保留用于更严重的情况,这会阻止应用甚至向用户显示通知权限请求对话框。我知道的情况包括应用程序在不支持推送通知的设备上运行(例如模拟器)或应用程序二进制文件中的aps-environment权利中的一些配置错误。
答案 3 :(得分:0)