wake-up-neo.net

Wie gruppiert man Android-Benachrichtigungen wie WhatsApp?

Ich weiß nicht, wie ich zwei oder mehr Benachrichtigungen zu nur einer zusammenfassen und eine Nachricht wie "Sie haben zwei neue Nachrichten" anzeigen.

23

Schritte, die aus dem folgenden Code beachtet werden müssen.

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.

Verwenden Sie den folgenden Code, um eine Benachrichtigung zu erstellen und gruppieren Sie diese. Binden Sie die Funktion in einen Tastenklick ein.

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());
        }
}

Weisen Sie für separate Benachrichtigungen unterschiedliche NOTIFICATION_IDs zu.

28
Sackurise

Für eine vollständige Logik prüfen Sie bitte meine Antwort. Ich habe die Logik mit den gemeinsamen Einstellungen und dem Broadcast-Empfänger verwendet, da ich jede Benutzermeldung in eine einzige Gruppe gruppieren und aktive Benachrichtigungen sehen sollte Benachrichtigungen, es hat mir überhaupt nicht geholfen. Also entschied ich mich, eine kleine Logik zu schreiben. Prüfen Sie es hier, wenn Sie Lust haben.

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

1
VA Entertaiment

Sie müssen die Benachrichtigung erstellen, damit sie mit einer Benachrichtigungs-ID aktualisiert werden kann, indem Sie NotificationManager.notify(ID, notification) aufrufen. 

Die folgenden Schritte müssen erstellt werden, um die Benachrichtigung zu aktualisieren:

  1. Aktualisieren oder erstellen Sie ein NotificationCompat.Builder-Objekt
  2. Erstellen Sie daraus ein Benachrichtigungsobjekt
  3. Geben Sie die Benachrichtigung mit derselben ID aus, die Sie zuvor verwendet haben

Ein Beispiel aus den Android-Entwicklerdokumenten:

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());
...

Lesen Sie auch die Android-Dokumente zu Stacking-Benachrichtigungen https://developer.Android.com/training/wearables/notifications/stacks.html

0
Smittey

Sie können alle Ihre Benachrichtigungen in einer einzigen Gruppe stapeln, indem Sie die MethodesetGroupverwenden und Ihre groupId-Zeichenfolge als Parameter übergeben.

builer.setGroup ("GROUP ID STRING");

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());
0
Natesh bhat