如何取消“允许推送通知”对话框后被解散一次?

我正在构build一个严重依赖APN的应用程序。 在我的应用程序第一次启动时,iOS会询问这个应用程序是否被允许使用APN(作为registerForRemoteNotificationTypes: call的结果)。 然而,一旦被解雇,这个对话永远不会popup。 我必须手动去Settings->Notifications->MyApp来启用/禁用那里的东西。 那么是否有一种方法可以避免这种喧扰,并且实际体验到每次在debugging模式下启动应用程序时,用户在第一次启动时都会遇到什么?

以下是苹果公司如何做到的:

在iOS上重置推送通知权限警报

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

如果您想模拟首次运行您的应用,则可以将该应用卸载一天。 你可以通过以下步骤实现后者,而不需要等待一天:

  1. 从设备上删除您的应用程序。

  2. 完全closures设备并重新打开。

  3. 进入设置>常规>date和时间,并设置date提前一天或更多。

  4. 将设备再次完全closures,然后重新打开。

因为时间就是金钱,而其他方法则永远不会改变,只要在debugging时反复更改捆绑ID,每次通知都会被重新查询。 一旦你满意的代码返回到原始包ID。

在iOS 9.x上,每次删除应用程序并重新安装时,都可以获得提示。 对于AppStore生产下载和adhoc模式都是如此。 设备令牌每次都是唯一的。

@chengsam在iOS 10中validation了这一点。

在IOS10我现在可以通过删除应用程序再次得到提示。

目前,他们已经决定拒绝,他们没有提示用户重新接受推送通知的程序化方式。

您应该简单地检查您是否被授予访问权限,如果不显示提醒用户在隐私设置中手动授予权限的视图,以启用应用程序的推送通知function。

我的问题是没有注册UserNotificationSettings。 这允许APN工作,但不是背景声音或徽章。

  [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 

如果您只是testing推送通知提示正确显示,请使用模拟器。 所有你需要做的就是卸载应用程序并重新安装,当你尝试注册推送通知时,提示会再次出现。