didFailToRegisterForRemoteNotificationsWithError:用户拒绝错误?

如果用户拒绝启用推送通知,我们将通过didFailToRegisterForRemoteNotificationsWithError获取错误。 有没有人知道在这种情况下NSError对象中的代码是什么(区分它,比如说,没有连接可用)?

我不认为你的初始陈述(总是)是真实的。 如果应用程序使用有效的configuration文件正确签名,则调用registerForRemoteNotificationTypes:将导致application:didRegisterForRemoteNotificationsWithDeviceToken:不pipe用户在“设置”应用程序中的“通知”选项如何。 根据我的经验,我唯一见过的application:didFailToRegisterForRemoteNotificationsWithError:被调用是因为签名的应用程序不正确。 有问题的错误提到“没有有效的APS环境权利find应用程序”。

虽然这个问题很老,并且同意大部分@ Jerred的回答,但是我还是想过发布一个更新的答案。

线程中主要问题的答案是NO

应用程序:didFailToRegisterForRemoteNotificationsWithError:在应用程序使用不正确的configuration文件进行签名时被调用。

也,

应用程序:didRegisterForRemoteNotificationsWithDeviceToken:只有在用户启用通知中心(设置应用程序)中的徽章,横幅/提醒或声音设置中的至less一个设置时,才会调用您的应用程序。

有些情况下iOS不会调用这两种方法

  • 当用户拒绝授予应用程序发送推送通知的权限时
  • 当没有networking连接和用户授予发送推送通知的权限时。
  • 当用户在“设置”应用程序中禁用来自通知中心的应用程序推送通知时。

根据我的经验, didFailToRegisterForRemoteNotificationsWithError:方法是为更严重的情况保留的,它可以防止应用程序甚至向用户显示通知权限请求对话框。 我所知道的情况包括应用程序在不支持推送通知的设备上运行(例如模拟器),或者在应用程序二进制文件的aps环境权限中存在一些错误configuration。