Как заменить отображаемые уведомления в iOS 10 с помощью инфраструктуры UserNotifications
Я создаю приложение для напоминаний, которое отправляет локальные уведомления, которые повторяются на основе пользовательских настроек пользователя. Например, я могу отправлять уведомления через день в 8 вечера. Каждый раз, когда я отправляю одно из этих уведомлений, я хочу заменить любое предыдущее уведомление, которое может уже отображаться в центре уведомлений пользователя.
Новая платформа UserNotifications в iOS приближает меня к возможности сделать это. Насколько я могу судить, уведомления можно заменить двумя способами:
- Использовать
UNCalendarNotificationTrigger
сrepeats: true
, Повторные триггеры заменяют прошлые. - Создать новый
UNNotificationRequest
с тем жеidentifier
, Всякий раз, когда запрос отправлен с тем жеidentifier
, он заменяет все остальные экземпляры.
Ни одно из этих решений не работает для меня:
- Я не могу использовать повторяющиеся уведомления, потому что
UNCalendarNotificationTrigger
использованияDateComponents
для повторяющегося графика, который просто не достаточно гранулирован. Мой пример выше "каждый второй день в 8 вечера" не может быть описан простоDateComponents
, - Поскольку мне нужно запланировать несколько уведомлений одновременно, я должен указать уникальный
identifier
s, и как таковые, они не заменяют друг друга при отображении.
Я надеялся, что расширение службы спасет меня здесь. Если бы я мог выполнить код при получении уведомления, я мог бы программно удалить старые уведомления при запуске новых. К сожалению, кажется, что расширения службы работают только для удаленных уведомлений. Даже если бы я мог использовать удаленные уведомления (что само по себе является целой червей), это решение отчасти отклоняет правила, разрешенные для расширений служб.
У кого-нибудь есть идеи, как решить эту проблему, или мне суждено спамить в центрах уведомлений моих пользователей?