按下按钮后,如何提示用户提供推送通知权限?

jfj*_*kls 6 xcode ios swift3 xcode8

我阅读了如何控制何时在iOS中提示用户推送通知权限和类似问题,但它们不是用Swift 3编写的.

在Xcode 8/Swift 3.0中阅读过注册推送通知?五次.

我一遍又一遍地在模拟器中运行我的应用程序但是在第一次之后,应用程序从未提示用户提供推送通知权限.

在Xcode 8/Swift 3.0中使用了注册推送通知的代码并继续尝试不同的答案并将代码移动到不同的地方,以便只有在按下某个按钮后才会要求用户许可,而不是在应用程序启动时立即.

我是否必须使用Apple ID等注册推送通知代码才能在Simulator中工作

Ped*_*lho 3

首先,您应该只提示用户一次是否想要接收推送通知。因此,将其与按钮绑定并每次都尝试运行它是一个糟糕的用户体验决策。仅当按钮实际上执行更多需要启用推送通知的操作时,才将推送通知提示绑定到按钮。

要为您的用户注册推送通知,您应该使用该UIApplication registerForRemoteNotifications方法。当此方法运行时,系统将提示您的用户是否要接收推送通知 - 但仅限一次!他们设置的设置将被视为最终设置,并且不会再次提示您的用户。如果他们想开始接收推送通知,则必须在应用程序的设置中进行更改。这是预期的行为,也是您应该这样做的方式。

如果您只想在用户按下按钮时提示用户,请删除对registerForRemoteNotifications应用程序启动代码的所有调用,并从与按钮绑定的操作中调用该方法。

如果您想出于测试目的重置推送通知权限,Apple 表示可以这样做:

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

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

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

  1. 从设备中删除您的应用程序。
  2. 完全关闭设备并重新打开。
  3. 转到“设置”>“常规”>“日期和时间”,然后将日期提前一天或更多。
  4. 再次完全关闭设备并重新打开。

  • 我不同意,也许第一次,我不想推送通知,但过了一段时间我可能会改变主意。我是否必须重新安装应用程序才能再次启用推送通知?不是真的,我可能只是想按一个按钮来提示我再次激活它们 (2认同)