В настоящее время я не могу очистить локальное уведомление в приложении (пример: напоминание), которое я запланировал из расширения службы уведомлений (NSE).
Устал очищать, используя следующие API,
NSArray *ids = @[@"Notify_from_app",@"Notify_from_extension"];
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center removeAllDeliveredNotifications];
[center removePendingNotificationRequestsWithIdentifiers:ids];
Приведенный выше код работает нормально, когда я пытаюсь очистить уведомление в NSE, которое запланировано из того же NSE. (если я попытаюсь очистить приложение, я не смогу)
К вашему сведению, я могу удалить все уведомления, используя следующий код. (но моя цель - очистить уведомление, используя идентификаторы, специфицированные c уведомление)
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center removeAllDeliveredNotifications];
[center removeAllPendingNotificationRequests];
Согласно документации Apple, объект currentNotficationCenter также поддерживает расширения приложений, поэтому я могу планировать оттуда локальное уведомление.
- Возможно, объект currentNotificationCenter для приложения не равен объекту currentNotificationCenter NSE.
- Это имеет больше смысла, потому что оба имеют отдельный контейнер. (Вот почему мы не можем напрямую получить доступ к контейнеру приложения из NSE.)
- Могу ли я сделать копию объекта в основных данных и получить ее в приложении для очистки уведомления? Это не похоже на хорошую практику.
Я ищу правильное решение, чтобы убрать напоминания.