39

我正在构建一个严重依赖APN的应用程序。在我的应用第一次启动后,iOS询问是否允许此应用使用APN(由于拨打registerForRemoteNotificationTypes:)。然而一旦被解雇,这个对话永远不会回弹。我必须手动去Settings->Notifications->MyApp启用/禁用那里的东西。那么是否有一种方法可以避免这种喧扰,并且实际体验到每次在调试模式下启动我的应用时,用户在第一次启动时都会遇到什么?如何取消“允许推送通知”对话框后被解除一次?

+0

检查此链接http://stackoverflow.com/questions/10191006/objective-c-detect-when-user-change-the-apps-notifications-settings – Pawan

+0

你应该将此标记为已回答,因为下面的方法会工作(对于iOS 7.0+)。 – LucasA

+0

@LucasA由谁? – Schultz9999

回答

76

这里是你如何Apple say做到这一点:

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

第一时间推送通知启用推送应用注册, 的iOS询问用户是否希望收到该应用的通知。 一旦用户回应此警告,除非该设备恢复或应用程序已经在 每天至少被卸载了它不会被再次提出 。

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

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

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

  3. 转到设置>常规>日期&时间和设置日期提前一天或更多。

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

+5

哇...好的工作苹果:)但谢谢你!总比没有好。我会给它一个镜头。 – Schultz9999

+1

副作用:如果您在启用了iMessages的iDevice上执行此操作,将有一天移动到未来将禁用iMessage。因此,完成上述步骤并重置时钟后,请记住重新启用iMessages,否则您将无法发送或接收 –

+4

我刚刚发现的某些内容:重置权限后,只要提示再次显示,您就可以转向关闭/打开电话而不是回答提示,这会在下一次应用程序运行时再次提示。用于更改代码试图找出是否/何时某些代码路径会导致提示。 –

5

当前他们是否编程方式来提示用户重新接受推迟通知后,他们已经决定说不。

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

+0

我甚至不想找到一种方法来问同样的事情。我所需要的基本上是使系统进入初始状态。但我明白你的观点。这是我以后通过调用'[[UIApplication sharedApplication] enabledRemoteNotificationTypes]'所做的。问题是我想在应用程序启动时采取不同的行为。我可以尝试使用我想的相同方法。 – Schultz9999

+0

我明白你想要做什么,但不幸的是这是不可能的(除非有一些未公开的私有API来这样做)。 – Woodstock

20

因为时间就是金钱和其他方法采取永远,只是改变你的包ID一遍又一遍调试时,每次通知将得到查询清新。一旦您满意代码返回到原始包ID。

+1

我认为这绝对是最好的,最快速和最安全的方式,让应用程序回到它的初始状态。 – ooxio

+1

但是您是否需要一直更改配置文件? –

+0

@VanDuTran我不必,推动仍然为我工作。但即使你不得不这样做,它也会比当前标记的解决方案快得多。哈哈! –

14

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

@chengsam在iOS 10中验证了这一点。

+0

在我的测试中,我没有看到在iOS 9.2(13C75)上通过HockeyApp分发到iPad Mini(型号A1489 a.k.a. ME276LL/A)的应用程序的临时版本的重新提示。其他人可以称重吗? – AWrightIV

+0

我没有看到重新提示:( – mofojed

+1

谢谢!它在我的iOS 10上运行良好。我刚从xCode运行应用程序到iPhone并在下次运行之前卸载应用程序。最简单的答案在这里。 –

1

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

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

如果您只是测试Push Notifications提示正确显示,请使用模拟器。您只需卸载该应用程序并重新安装,并在您尝试注册推送通知时再次出现提示。

6

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

+1

这是iOS 8的当天回来 –

相关问题