UNUserNotificationCenter.current().requestAuthorization() 可以多次调用吗?

jar*_*air 3 apple-push-notifications ios unusernotificationcenter unusernotification

UNUserNotificationCenter.current().requestAuthorization() 可以多次调用吗?

  • 我可以在每次应用程序启动时调用吗?
  • 用户授予通知权限后可以再次调用吗?
  • 如果没有,为什么不呢?

jar*_*air 5

答案:是又不是。

  • 您可以多次调用它,但不能同时调用它多次,否则除了一个并发请求之外的所有请求都将失败而不会出现错误(即“granted = false但是error = nil”)。如果您的应用程序逻辑具有多个可以触发授权请求的事件,则可能会发生并发请求,而不是在 appDidFinishLaunching 中执行一次的简单快乐路径。

  • 更糟糕的是,并发请求也会触发通知权限被关闭,即使用户在之前的应用程序运行期间已经授权了它们。这种情况的错误报告将如下所示:“APN 权限正在自行关闭”。就像所有的错误一样,一开始这似乎是不可能的。