Отклонить UserNotificationsUI - UNNotificationContentExtensionResponseOption
Я устанавливаю несколько локальных уведомлений, и я установил количество действий для уведомления. как повесить, показать, закрыть.
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
let id = response.notification.request.identifier
if response.actionIdentifier == "SnoozeId" {
completion(UNNotificationContentExtensionResponseOption.dismiss)
}}
На didReceive - если действие дремлет - выполните дремоту, а затем я отклонил уведомление. поскольку я отклоняю все другие уведомления, ушли из центра уведомлений. Если у меня есть два уведомления A и B . Если я продолжаю давить и выполняю откладывание на А. И А, и В ушли из центра уведомлений. он должен уволить только А.
1 ответ
Вот результаты тестирования моего приложения.
Чтобы лучше ответить на ваш вопрос, предоставьте дополнительную информацию, такую как - json уведомления и его userInfo (возможно, вы группируете уведомления и отклоняете все сразу?) И какая функция, которую вы вызываете, приводит к вызову didReceive (...).
Если вы позвоните
self.extensionContext?.dismissNotificationContentExtension()
затем закрывает расширение содержимого, но не закрывает его.
Если вы позвоните:
self.extensionContext?.performNotificationDefaultAction()
затем он завершает действие и отклоняет это единственное уведомление (не другие). Однако это открывает приложение, и вы, возможно, не захотите этого делать.
У меня мой делегат настроен следующим образом:
func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
switch response.actionIdentifier {
case UNNotificationDismissActionIdentifier:
// Dismiss action stuff.
completion(.dismiss)
// To not dismiss
// completion(.doNotDismiss)
case UNNotificationDefaultActionIdentifier:
// Default action stuff.
// Let's say the user executed default action, we want to dismiss and forward the action.
completion(.dismissAndForwardAction)
break
default:
break
}
}
Тиа может помочь вам, на это был ответ некоторое время назад. Только на него был дан ответ в задаче C. Ответ, который, я думаю, вы захотите посмотреть, хранит уведомления в изменяемом массиве и удаляет уведомления из массива, когда это необходимо.