如何在取消一次“允许推送通知”对话框后返回?

时间:2014-02-05 08:22:29

标签: ios iphone objective-c push-notification apple-push-notifications

我正在构建一个严重依赖APN的应用程序。在我的应用程序第一次启动时,iOS会询问是否允许此应用程序使用APN(作为registerForRemoteNotificationTypes:调用的结果)。然而,一旦被解雇,这个对话框永远不会弹出。我必须手动转到Settings->Notifications->MyApp以启用/禁用其中的内容。那么有没有办法避免这种喧嚣,并实际体验用户每次在调试模式下启动应用程序时的首次启动体验?

8 个答案:

答案 0 :(得分:80)

以下是Apple say你可以这样做的方式:

  

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

     

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

     

如果您想模拟首次运行的应用,可以离开   该应用程序已卸载一天。没有你可以实现后者   实际上是按照以下步骤等待一天:

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

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

  4.   
  5. 转到设置>一般>日期&时间并将日期设定为一天或更长时间。

  6.   
  7. 再次完全关闭设备并重新打开。

  8.   

答案 1 :(得分:24)

Since time is money and the other methods take FOREVER—just change your bundle ID over and over while debugging, each time notifications will get queried fresh. Once you are satisfied with code return to original bundle ID.


Key Notes from comments below:

  • Temporarily turn off all other Capabilities (like IAP) to get around needing to change the provisioning profile.

答案 2 :(得分:18)

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

@chengsam在iOS 10中验证了这一点。 @WongWray也证实了这在iOS 11中也是如此。

答案 3 :(得分:6)

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

答案 4 :(得分:5)

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

您应该只检查您是否已被授予访问权限,如果没有显示视图,提醒用户手动授予隐私设置权限,以启用应用程序的推送通知功能。

答案 5 :(得分:1)

我的问题是没有注册UserNotificationSettings。这使得APN可以工作,但不能使用背景声音或徽章。

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

答案 6 :(得分:1)

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

答案 7 :(得分:0)

iOS 13及更高版本上,您需要完成Eran指出的整个更改日期重置操作。

iOS 12及更低版本,只需卸载应用即可。这也适用于模拟器,但是由于模拟器不支持推送通知,因此您不会获得令牌。