当用户拒绝初始提示时,Apple Push Notification 注册回调? [复制]

Posted

技术标签:

【中文标题】当用户拒绝初始提示时,Apple Push Notification 注册回调? [复制]【英文标题】:Apple Push Notification registration callback for when user refuses initial prompt? [duplicate] 【发布时间】:2013-03-01 22:14:16 【问题描述】:

当我第一次在我的UIApplication 上调用registerForRemoteNotificationTypes 时,用户会收到关于允许此应用程序向他们发送推送通知的系统提示。如果他们说是,那么 didRegisterForRemoteNotificationsWithDeviceToken 会被我的应用程序委托调用。如果他们说不,didFailToRegisterForRemoteNotificationsWithError 不会 被调用。一旦他们对最初的提示说不,我以后尝试重新注册时就不会收到任何回调。

这是标准行为吗?知道他们何时拒绝该提示的最佳方式是什么? Apple's docs on this 没有说任何关于这种情况的有用信息。

【问题讨论】:

不,我的问题是如何知道他们说不,而不是以后如何重新问他们。 在这种情况下,也许***.com/questions/5399137/… 是您问题的答案。 【参考方案1】:

用户决定选择哪个选项不会影响使用哪个回调。如果用户说“否”,您仍然会成功获得用户的设备令牌。您仍然可以向此设备发送推送通知,Apple 的反馈服务会报告它们已送达(这意味着反馈服务不会告诉您他们已取消订阅)。推送“否”的唯一效果是“隐藏”针对特定应用发送到设备的推送通知。

由于此设计决策,用户可以通过转到设置 -> 通知来撤销此决策,并为您的应用重新启用推送通知并接收推送通知,而无需从您的应用或操作系统进行任何特殊的重新注册逻辑.

编辑(ios7):在 iOS 5 上注意到了这种行为。当我在 iOS 7 上再次测试时,我在按下“不允许”后没有收到设备令牌。只有在我访问设置 > 通知 > MyApp 并启用通知后,我才获得设备令牌。

编辑 (iOS8):在 iOS 8 中,通知设置与远程通知是分开的,但行为类似于 iOS 7。在您的应用程序授权通知之前,您似乎不会获得设备令牌。我正在测试的应用程序没有启用远程通知后台模式功能,但如果您的应用程序确实启用了该功能,即使未启用通知,您也可以获得设备令牌。 (我很难对此进行测试,因为尝试让该通知提示再次出现非常痛苦。)

【讨论】:

我不相信这是完全正确的。根据我的经验,如果用户点击“不允许”,您的应用不会获得设备令牌。 我在 iOS 7 中注意到了同样的事情。它一定在某个时候发生了变化。谢谢 AriX!

以上是关于当用户拒绝初始提示时,Apple Push Notification 注册回调? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Apple Push Notification Service 用户响应

当应用程序从后台删除时,Apple Push 通知不会在 ios 7 上传递

使用 CloudKit/iCloud 时 Apple Store 构建被拒绝

当批次中的一个被拒绝时缺少推送通知

Git上传项目提示Push rejected: Push to origin/master was rejected解决办法

git push 失败出现error: src refspec master does not match any.解决方案