1

У меня есть приложение, которое генерирует уведомление, когда происходит определенное событие, введенное пользователем в приложении. Теперь, например, пользователь ввел 7 событий, и он не нажимает на уведомления, тогда панель уведомлений станет заполнена. Я не хочу этого. Я хочу показать только один значок уведомления, но все 7 уведомлений. Также как whatsapp, где отображается только 1 значок уведомления.Обработка нескольких уведомлений в android

+0

Создать пользовательский макет для уведомления и имеют одинаковый идентификатор builder и вид обновления для каждого нового уведомления! – Muthu

+1

Создайте уникальный NOTIFICATION_ID и используйте его для всех уведомлений. Если предыдущее уведомление уже существует, просто обновите пользовательский интерфейс предыдущего уведомления. –

+0

@ user2163887 Спасибо, это имеет смысл для меня больше, но пример будет очень приятным. –

ответ

5

Я предполагаю, что вы смотрите на «Укладку» уведомлений.

Здесь есть несколько важных API.
1. setGroup(): Это означает, что уведомление является частью группы уведомлений, имеющих один и тот же ключ.
2. setGroupSummary(): Установите это уведомление как сводку группы для группы уведомлений.

Кроме того, нам необходимо иметь одинаковый идентификатор построителя уведомлений. Ниже приведены мои declarayions в классе:

final static String GROUP_KEY_EMAILS = "group_key_emails"; 
int UNIQUE_NOTIFICATION_ID=422; 

и примеры кода, чтобы отправлять уведомления:

Notification summaryNotification = new NotificationCompat.Builder(context)   
     .setContentTitle("2 new messages")   
     .setSmallIcon(R.drawable.ic_launcher)     
     .setStyle(new NotificationCompat.InboxStyle()     
     .addLine("Notification 1 First line of info")     
     .addLine("otification 2 Second line of info") 
     .addLine("otification 3 Second line of info") 
     .setBigContentTitle("3 new messages")     
     .setSummaryText("[email protected]"))   
     .setGroup(GROUP_KEY_EMAILS)   
     .setGroupSummary(true)   
     .build(); 


     NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); 
     notificationManager.notify(UNIQUE_NOTIFICATION_ID, summaryNotification); 

Это покажет интерфейс, как показано ниже:

enter image description here