Очистить определенные уведомления - PullRequest
0 голосов
/ 07 октября 2019

Например, у меня есть пять категорий: A, B, C, D, E

Получено 2 Push-уведомления для категории A

Получено 3 Push-уведомления для категории B

Получено 4 Push-уведомления для категории C

Снова получено 2 Push-уведомления для категории A

Таким образом, всего получено 11 уведомлений

, если я нажму на одно из уведомлений категории Aзатем все уведомления категории A должны быть удалены. Остальные уведомления B и C (7 уведомлений) должны быть доступны в разделе уведомлений

Кто-нибудь знает, как это сделать? Есть ли какой-нибудь пример для обработки этого сценария?

Возможно ли это в Android

1 Ответ

0 голосов
/ 07 октября 2019

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

Вам нужны уведомления, когда ваше приложение запускается через onMessageReceivedобратный вызов вашей FirebaseMessagingService реализации. Чтобы это произошло, ваши уведомления должны иметь data полезную нагрузку.

. В этом обратном вызове вы поднимаете локальное уведомление для себя, таким образом предоставляя NotificationChannel и уникальный идентификатор для каждого уведомления.

Тогда вы полностью контролируете, какие уведомления отменить, а какие сохранить. Ваша служба должна отслеживать, какие уведомления отображаются в простом списке, содержащем все идентификаторы по каналу (= категория).

Может быть, вам помогут следующие фрагменты:

Для Android 8 и более поздних версий

Пожалуйста, прочитайте подробные документы для новых NotificationChannels на developer.android.com

Для более старых версий

Просто сохраните список всехпоказывать уведомления в вашей реализации сервиса и отменять все, кого вы хотите закрыть.

NotificationManager notificationManager = (NotificationManager)
    context.getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager != null)
    notificationManager.cancel(id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...