可以多次调用 UNUserNotificationCenter.current().requestAuthorization() 吗?
- 我可以在每次应用程序启动时调用吗?
- 用户授予通知权限后是否可以再次调用?
- 如果不是,为什么不呢?
可以多次调用 UNUserNotificationCenter.current().requestAuthorization() 吗?
回答:是和不是。
您可以多次调用它,但不能同时多次调用它,否则除了一个并发请求之外的所有请求都将失败而不会出现错误(即butgranted = false
)error = nil
。如果您的应用程序逻辑有多个可以触发授权请求的事件,则可能会发生并发请求,而不是在 appDidFinishLaunching 中执行一次的简单快乐路径。
更糟糕的是,并发请求也会触发通知权限被关闭,即使用户在之前的应用程序运行期间已经授权它们。这种情况的错误报告将如下所示:“APN 权限正在关闭它们自己。” 就像所有的错误一样,一开始似乎是不可能的。