Может ли UNUserNotificationCenter.current(). RequestAuthorization() вызываться более одного раза?

Может ли UNUserNotificationCenter.current(). RequestAuthorization() вызываться более одного раза?

  • Могу ли я вызывать при каждом запуске приложения?
  • Могу ли я вызвать его снова после того, как пользователь предоставил разрешения на уведомления?
  • Если нет, то почему нет?

1 ответ

Ответ: да и нет.

  • Вы можете вызывать его более одного раза, но вы не можете вызывать его более одного раза одновременно, иначе все, кроме одного из одновременных запросов, не будут выполнены без ошибок (т.е. granted = falseноerror = nil). Параллельные запросы могут возникать, если в логике вашего приложения есть несколько событий, которые могут инициировать запрос авторизации, в отличие от простого счастливого пути сделать это один раз внутри appDidFinishLaunching.

  • Хуже того, одновременные запросы также приводят котключению разрешений на уведомления, даже если пользователь уже авторизовал их во время предыдущего запуска приложения. Отчет об ошибке для такого сценария будет выглядеть так: "Разрешения APN отключают себя". Что, как и все ошибки, поначалу кажется невозможным.

Другие вопросы по тегам