如何在按下button后提示用户推送通知许可?

我读了如何控制何时提示用户在iOS中的推送通知权限和类似的问题,但他们没有写在Swift 3中。

我已阅读在Xcode 8 / Swift 3.0注册推送通知? 五次。

我一遍又一遍在Simulator中运行我的应用程序,但第一次之后,应用程序从来没有提示用户推送通知的权限。

我使用Xcode 8 / Swift 3.0中的注册推送通知的代码? 并不断尝试不同的答案,并将代码移到不同的地方,以便用户只需按下某个button就可以获得许可,而不是在应用程序启动时立即获得许可

我是否必须注册一个Apple ID等等的推送通知代码才能在模拟器中工作

首先,您应该只提示一次您的用户是否要获取推送通知。 所以把它绑在一个button上并试图每次运行它都是一个糟糕的用户体验决定。 如果button实际上做了更多需要启用推送通知的内容,则只能将推送通知提示与button绑定。

要注册您的用户推送通知,您应该使用UIApplication registerForRemoteNotifications方法。 当这个方法运行时,你的用户会被提示是否要接收推送通知 – 但只有一次! 他们设置的设置将被视为明确的,您的用户不会被提示。 如果他们想开始接收推送通知,他们必须改变应用程序的设置。 这是预期的行为,是你应该怎么做的。

如果只想按下button时提示用户,则从应用程序的启动代码中删除对registerForRemoteNotifications调用,然后调用与button相关的操作中的方法。

如果您想重置推送通知权限以用于testing目的 , 则苹果公司表示这是可能的:

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

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

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

  1. 从设备上删除您的应用程序。
  2. 完全closures设备并重新打开。
  3. 进入设置>常规>date和时间,并设置date提前一天或更多。
  4. 将设备再次完全closures,然后重新打开。