Мы хотим добавить функцию в наше приложение, чтобы пользователи могли получать уведомления о важных уведомлениях, которые они могли пропустить.Вот как мы хотели бы, чтобы это работало:
- Когда приходит push-уведомление, запускается расширение службы уведомлений.
- Расширение проверяет, должно ли оно выполнять какую-либо работу (мыне хочу напоминать пользователям, если они в данный момент находятся в приложении).
- Если функция напоминания включена, расширение пытается порождать 3 локальных уведомления с интервалом в 1 минуту, напоминая пользователю, что они пропустили важную информацию.
- Если пользователь открывает приложение, все существующие локальные уведомления очищаются.
- Если другое уведомление поступает до того, как пользователь открывает приложение, все существующие локальные уведомления очищаются и создается новый набор.
Это прекрасно работает, кроме шага № 3.Я проверяю авторизацию уведомлений из расширения службы, прежде чем приступить к работе, и постоянно получаю .authorized
обратно.Однако когда я вызываю UNUserNotificationCenter.current.add(_:withCompletionHandler:)
, обработчик завершения вызывается с ошибкой UNError: Notifications are not allowed for this application
.
Странно то, что он работает , иногда .Например, я получу 2-е уведомление и получу напоминание, но 1-е и 3-е не получится.Тем не менее, это чрезвычайно редко (<5% успеха планирования локальных уведомлений). </p>
Кто-нибудь есть какое-либо понимание этого?