rojo punto oreo notificaciones notificacion iconos globo flotantes contador aparece android notifications stack google-cloud-messaging grouping

punto - ¿Cómo agrupar las notificaciones de Android como WhatsApp?



notificaciones whatsapp android 8 (4)

No sé cómo agrupar dos o más notificaciones en solo una y mostrar un mensaje como "Tienes dos mensajes nuevos".


Debe crear la notificación para que pueda actualizarse con un ID de notificación llamando a NotificationManager.notify(ID, notification) .

Los siguientes pasos deben crearse para actualizar la notificación:

  1. Actualizar o crear un objeto NotificationCompat.Builder
  2. Construye un objeto de notificación desde él
  3. Emita la Notificación con la misma ID que usó anteriormente

Un ejemplo tomado de la documentación del desarrollador de Android:

mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Sets an ID for the notification, so it can be updated int notifyID = 1; mNotifyBuilder = new NotificationCompat.Builder(this) .setContentTitle("New Message") .setContentText("You''ve received new messages.") .setSmallIcon(R.drawable.ic_notify_status) numMessages = 0; // Start of a loop that processes data and then notifies the user ... mNotifyBuilder.setContentText(currentText).setNumber(++numMessages); // Because the ID remains unchanged, the existing notification is updated. mNotificationManager.notify(notifyID, mNotifyBuilder.build()); ...

También vea la documentación de Android en Notificaciones de apilamiento https://developer.android.com/training/wearables/notifications/stacks.html


Para una lógica completa, por favor considere verificar mi respuesta. Utilicé la lógica con preferencias compartidas y el receptor de difusión, ya que necesitaba agrupar cada mensaje de usuario en uno solo y estar a la vista de las notificaciones activas. Notificaciones, no me ayudó en absoluto. Así que decidí escribir un poco de lógica. Revísalo aquí si quieres.

https://.com/a/38079241/6466619


Pasos a tener en cuenta a partir del siguiente código.

NotificationCompat.Builder:contains the UI specification and action information NotificationCompat.Builder.build() :used to create notification (Which returns Notification object) Notification.InboxStyle: used to group the notifications belongs to same ID NotificationManager.notify():to issue the notification.

Utilice el siguiente código para crear una notificación y agruparlo. Incluir la función en un clic del botón.

private final int NOTIFICATION_ID = 237; private static int value = 0; Notification.InboxStyle inboxStyle = new Notification.InboxStyle(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.push_notify_icon); public void buttonClicked(View v) { value ++; if(v.getId() == R.id.btnCreateNotify){ NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(this); builder.setContentTitle("Lanes"); builder.setContentText("Notification from Lanes"+value); builder.setSmallIcon(R.drawable.ic_launcher); builder.setLargeIcon(bitmap); builder.setAutoCancel(true); inboxStyle.setBigContentTitle("Enter Content Text"); inboxStyle.addLine("hi events "+value); builder.setStyle(inboxStyle); nManager.notify("App Name",NOTIFICATION_ID,builder.build()); } }

Para notificaciones separadas asigne diferentes NOTIFICATION_IDs ..


Puede apilar todas sus notificaciones en un solo grupo usando el método setGroup y pasando su cadena de GroupId como parámetro.

builer.setGroup ("STRING ID GRUPO");

NotificationManager nManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification.Builder builder = new Notification.Builder(this); builder.setContentTitle("Lanes"); builder.setGroup("GROUP_ID_STRING"); builder.setContentText("Notification from Lanes"+value); builder.setSmallIcon(R.drawable.ic_launcher); builder.setLargeIcon(bitmap); builder.setAutoCancel(true); inboxStyle.setBigContentTitle("Enter Content Text"); inboxStyle.addLine("hi events "+value); builder.setStyle(inboxStyle); nManager.notify("App Name",NOTIFICATION_ID,builder.build());