Есть ли способ удалить доставленные уведомления по прибытии нового? - PullRequest
0 голосов
/ 07 февраля 2019

Примерно в третьем квартале прошлого года я смог использовать UNNotificationServiceExtension, чтобы не только расшифровывать содержимое входящих push-уведомлений (общий случай использования), но и удалять ранее доставленные уведомления каждый раз, когда поступало новое.

Я использовал UNUserNotificationCenter.current().getDeliveredNotifications для получения доставленных уведомлений, а затем удалял те, которые мне нужно было удалить.

Однако, когда наступил новый год, я неожиданно заметил, что мое приложение больше не удаляет ранее доставленные уведомления изЦентр уведомлений, несмотря на то, что код все еще присутствует в расширении службы и не выдает никаких ошибок, и, несмотря на то, что другой код в расширении службы работает просто отлично.

После отладки я обнаружил, что UNUserNotificationCenter.current().getDeliveredNotifications теперь возвращаетпустой массив уведомлений, даже если их несколько на экране блокировки.

И UNUserNotificationCenter.current().removeAllDeliveredNotifications() просто ничего не делает, поэтому даже простое использование этого вызова без извлечения или фильтрации доставленных уведомлений ничего не удаляет.

Кто-нибудь знаета если еще есть способ сделать это?

Или Apple может запретить эту функцию?

1 Ответ

0 голосов
/ 14 февраля 2019

Кажется, здесь может быть полезен заголовок запроса apns-collapse-id APN.

  1. Может использоваться для обновления прежнего содержимого уведомления и его вывода наверх.

    Несколько уведомлений с одним и тем же идентификатором свертывания отображаются пользователю как одно уведомление.

  2. В соответствии с документами , apns-collapse-id указываетуведомление identifier (которое обычно является случайным).BE может отправить новое уведомление об «удалении» с указанным идентификатором в полезной нагрузке, чтобы использовать его в функции removeDeliveredNotifications(withIdentifiers:).

...