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:
- Actualizar o crear un objeto
NotificationCompat.Builder
- Construye un objeto de notificación desde él
- 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());