重置应用的推送通知设置

han*_*nno 170 iphone push-notification

我正在使用推送通知开发应用程序.要检查所有可能的用户交互方式,我想在用户拒绝在第一次启动时为我的应用启用推送通知时测试我的应用.

registerForRemoteNotificationTypes但是,对话框(由其启动)仅在每个应用程序中出现一次.如何重置iPhone OS的应用程序内存.删除应用程序并重新安装没有帮助.

ian*_*ito 298

技术说明TN2265:推送通知故障排除

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

如果您想模拟首次运行的应用,可以将应用程序卸载一天.通过将系统时钟向前设置一天或更长时间,完全关闭设备,然后重新打开设备,您可以实现后者而无需实际等待一天.

更新:如下面的评论中所述,此解决方案自iOS 5.1起停止工作.我鼓励向Apple提交一个错误,以便他们可以更新他们的文档.目前的解决方案似乎是重置设备的内容和设置.

更新:技术说明已更新,其中的新步骤在iOS 7中正常运行.

  1. 从设备中删除您的应用.
  2. 完全关闭设备并重新打开.
  3. 转到设置>常规>日期和时间,并将日期设置为一天或更长时间.
  4. 再次完全关闭设备并重新打开.

从iOS 9开始更新

只需删除并重新安装应用程序,就会将通知状态重置为notDetermined(意味着会出现提示).

感谢Gomfucius的回答:https://stackoverflow.com/a/33247900/704803

  • 有没有人尝试过这款iOS 5.1?我完全按照这些步骤操作,但我仍然无法让设备重置它...我甚至尝试在我的Mac上设置时钟,然后再通过Xcode安装它. (16认同)
  • 这是荒唐的.Apple没有意识到开发人员甚至用户可能希望能够在不使用非常糟糕的解决方法的情况下重置这些内容吗? (10认同)
  • Apple为AppStore提交指南添加了新要求,该指南依赖于应用程序来显示提示.这可能表明iOS 5.1中已删除自动提示.但是,没有API来查询通知中心设置,因此不确定提示的目的是什么.请参阅我对类似问题的回复:http://stackoverflow.com/questions/10191006/objective-c-detect-when-user-change-the-apps-notifications-settings/10191220#10191220 (2认同)
  • 当我在模拟器中尝试这个时,我得到错误Code = 3010"模拟器中不支持远程通知" (2认同)

cap*_*kaw 47

另一个仅用于测试解决方案的方法是简单地更改您的包ID.一旦完成,别忘了改回来!

  • 您是否还需要为新的应用程序ID创建证书才能进行测试? (12认同)

Gom*_*ius 35

在iOS 9.0.2上,每次删除应用程序并重新安装时,我都会收到"注册推送通知警报".这适用于AppStore生产下载和adhoc模式.

更新:已确认这适用于iOS 9.x.

  • 最后!不再需要删除应用程序、关闭设备、将时钟设置为前进时间以及诸如此类的一些愚蠢的事情。 (3认同)

小智 19

如前所述,重置iOS3上的应用程序的通知状态的方法更新为iOS5.

这适用于iOS6:

  • 从设备中删除应用程序
  • 将设备日期时间设置为提前两天或更长时间
  • 重启设备
  • 将设备日期时间设置为提前两天或更长时间
  • 重启设备
  • 再次安装并运行该应用程序

但是这只会使初始提示再次出现 - 它不会删除任何其他推送状态相关的东西.


小智 9

plist:/private/var/mobile/Library/RemoteNotification/Clients.plist

...包含推送通知的注册客户端.删除应用程序的条目将导致提示重新出现

  • 如果jailbreakers可以做到这一点,那么开发人员应该可以使用非越狱手机,对吗?这不是一个无用的答案,因为这不是你在应用程序中提交给商店的东西.开发人员可以在测试时进行测试. (20认同)
  • 如果您为App Store开发,则无用的答案 (11认同)
  • 有趣.但这仅适用于越狱系统,对吧? (2认同)

dag*_*art 7

以编程方式执行它似乎每次都适合我.我有一个没有注释以下行的构建:

 [[UIApplication sharedApplication] unregisterForRemoteNotifications];
Run Code Online (Sandbox Code Playgroud)

我每次想从PN取消注册时都会运行它.您可能必须从最近的列表中明确地结束应用,并使用"设置"应用中的"通知中心"来使其正确.

此外,要求用户注册PN的UI提示可能不会显示.不确定是否已在任何最新的iOS版本中禁用.


Vin*_*hen 5

正如ianolito所说,设置日期应该有效:

通过将系统时钟向前设置一天或更长时间,完全关闭设备,然后重新打开设备,您可以实现后者而无需实际等待一天.

我注意到我的设备(iPhone 4,iOS 6.1.2)将系统时钟设置为前一天甚至几天都不适合我.所以我将日期设置为一个月,然后它确实有效,我的应用程序再次显示通知提示.

希望这对任何人都有帮助,它可能有点头痛!


lep*_*ert 5

我同意micmdk ..我有一个推送通知的开发环境设置,需要一种方法来重置我的手机看起来像一个初始安装...只有这些精确的步骤适合我...需要重新启动设备:

来自APPLE TECH DOC:

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

如果您想模拟首次运行的应用,可以将应用程序卸载一天.您可以通过以下步骤实现后者而无需等待一天:

  1. 从设备中删除您的应用.

  2. 完全关闭设备并重新打开.

  3. 转到设置>常规>日期和时间,并将日期设置为一天或更长时间.

  4. 再次完全关闭设备并重新打开.