Если вы получаете 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);