Benachrichtigungsgruppe erstellen

Ab Android 7.0 (API-Level 24) können Sie zugehörige Benachrichtigungen in einer Gruppe anzeigen lassen. Wenn Ihre Anwendung beispielsweise Benachrichtigungen für empfangene E-Mails anzeigt, fassen Sie alle Benachrichtigungen für neue E-Mail-Nachrichten in derselben Gruppe zusammen, damit sie minimiert werden.

Wenn Sie ältere Versionen unterstützen möchten, fügen Sie eine zusammenfassende Benachrichtigung hinzu, die allein angezeigt wird, um alle separaten Benachrichtigungen zusammenzufassen. Dies erfolgt am besten mit einer Benachrichtigung im Posteingangsstil.

Abbildung 1: Eine minimierte (oben) und maximierte (untere) Benachrichtigungsgruppe.

Verwenden Sie Benachrichtigungsgruppen, wenn alle der folgenden Bedingungen für Ihren Anwendungsfall erfüllt sind:

  • Die untergeordneten Benachrichtigungen sind vollständige Benachrichtigungen und können einzeln angezeigt werden, ohne dass eine Gruppenzusammenfassung erforderlich ist.

  • Es hat einen Vorteil, die Benachrichtigungen für Kinder einzeln anzuzeigen. Beispiel:

    • Sie sind entscheidungsrelevant und enthalten spezifische Maßnahmen für jede Benachrichtigung.

    • In jeder Benachrichtigung befinden sich weitere Informationen, die der Nutzer sehen kann.

Wenn Ihre Benachrichtigungen die oben genannten Kriterien nicht erfüllen, können Sie stattdessen eine vorhandene Benachrichtigung mit neuen Informationen aktualisieren oder eine Benachrichtigung im Nachrichtenstil erstellen, um mehrere Aktualisierungen in derselben Unterhaltung anzuzeigen.

Gruppe erstellen und eine Benachrichtigung hinzufügen

Definieren Sie zum Erstellen einer Benachrichtigungsgruppe einen eindeutigen ID-String für die Gruppe. Rufen Sie dann für jede Benachrichtigung für die Gruppe setGroup() auf und übergeben Sie den Gruppennamen. Beispiele:

Kotlin

val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

Java

String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.new_mail)
        .setContentTitle(emailObject.getSenderName())
        .setContentText(emailObject.getSubject())
        .setLargeIcon(emailObject.getSenderAvatar())
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Standardmäßig werden Benachrichtigungen danach sortiert, wann sie gepostet wurden. Sie können die Reihenfolge aber ändern, indem Sie setSortKey() aufrufen.

Wenn Benachrichtigungen für die Gruppe einer Benachrichtigung von einer anderen Benachrichtigung verarbeitet werden müssen, rufen Sie setGroupAlertBehavior() auf. Wenn beispielsweise nur die Zusammenfassung Ihrer Gruppe laut werden soll, müssen alle untergeordneten Elemente in der Gruppe das Verhalten der Gruppenbenachrichtigung GROUP_ALERT_SUMMARY haben. Die anderen Optionen sind GROUP_ALERT_ALL und GROUP_ALERT_CHILDREN.

Gruppenzusammenfassung festlegen

Gruppierte Benachrichtigungen müssen eine zusätzliche Benachrichtigung haben, die als Gruppenzusammenfassung dient. Wenn du gruppierte Benachrichtigungen aktivieren möchtest, musst du eine Gruppenzusammenfassung einrichten. Diese Gruppenzusammenfassung muss einen Teil des Textes aus allen anderen Benachrichtigungen in der Gruppe enthalten, damit der Nutzer verstehen kann, was sich in der Gruppe befindet. Wie die Gruppenzusammenfassung angezeigt wird, hängt von der Android-Version ab:

  • Auf Android-Versionen unter 7.0 (API-Level 24), wo keine verschachtelte Benachrichtigungsgruppe angezeigt werden kann, zeigt das System nur die zusammenfassende Benachrichtigungsgruppe an und blendet alle anderen aus. Die Nutzenden können auf die Gruppen- zusammenfassungsbenachrichtigung tippen, um die App zu öffnen.

  • Unter Android 7.0 und höher zeigt das System die zusammenfassende Benachrichtigungsgruppe als verschachtelte Benachrichtigungsgruppe an, die mit Textausschnitten aus jeder gruppierten Benachrichtigung gekennzeichnet ist. Der Text, den Sie in der Benachrichtigung für die Gruppenzusammenfassung festgelegt haben, wird nicht angezeigt. Der Nutzer kann die verschachtelte Gruppe von Benachrichtigungen maximieren, um die einzelnen Benachrichtigungen in der Gruppe zu sehen, wie in Abbildung 1 dargestellt.

Auch wenn neuere Versionen von Android den von Ihnen entworfenen Text für die Gruppenzusammenfassung nicht anzeigen, müssen Sie immer manuell eine Zusammenfassung festlegen, um gruppierte Benachrichtigungen zu aktivieren. Das Verhalten der Gruppenzusammenfassung kann je nach Gerätetyp variieren, z. B. bei Wearables. Wenn Sie Rich-Inhalte für die Gruppenzusammenfassung festlegen, können Sie auf allen Geräten und Versionen die bestmögliche Nutzererfahrung erzielen.

So fügen Sie eine Gruppenzusammenfassung hinzu:

  1. Erstellen Sie eine neue Benachrichtigung mit einer Beschreibung der Gruppe – am besten mit der Benachrichtigung im Posteingangsstil.

  2. Rufe setGroup() auf, um der Gruppe die zusammenfassende Benachrichtigung hinzuzufügen.

  3. Geben Sie durch Aufrufen von setGroupSummary(true) an, dass er als Gruppenzusammenfassung verwendet werden soll.

Der folgende Code zeigt ein Beispiel für das Erstellen einer Gruppenzusammenfassung:

Kotlin

// Use constant ID for notifications used as group summary.
val SUMMARY_ID = 0
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject1.getSummary())
        .setContentText("You will not believe...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject2.getSummary())
        .setContentText("Please join us to celebrate the...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build()

val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle(emailObject.getSummary())
        // Set content text to support devices running API level < 24.
        .setContentText("Two new messages")
        .setSmallIcon(R.drawable.ic_notify_summary_status)
        // Build summary info into InboxStyle template.
        .setStyle(NotificationCompat.InboxStyle()
                .addLine("Alex Faarborg Check this out")
                .addLine("Jeff Chang Launch Party")
                .setBigContentTitle("2 new messages")
                .setSummaryText("janedoe@example.com"))
        // Specify which group this notification belongs to.
        .setGroup(GROUP_KEY_WORK_EMAIL)
        // Set this notification as the summary for the group.
        .setGroupSummary(true)
        .build()

NotificationManagerCompat.from(this).apply {
    notify(emailNotificationId1, newMessageNotification1)
    notify(emailNotificationId2, newMessageNotification2)
    notify(SUMMARY_ID, summaryNotification)
}

Java

// Use constant ID for notifications used as group summary.
int SUMMARY_ID = 0;
String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification1 =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject1.getSummary())
        .setContentText("You will not believe...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Notification newMessageNotification2 =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setSmallIcon(R.drawable.ic_notify_email_status)
        .setContentTitle(emailObject2.getSummary())
        .setContentText("Please join us to celebrate the...")
        .setGroup(GROUP_KEY_WORK_EMAIL)
        .build();

Notification summaryNotification =
    new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle(emailObject.getSummary())
        // Set content text to support devices running API level < 24.
        .setContentText("Two new messages")
        .setSmallIcon(R.drawable.ic_notify_summary_status)
        // Build summary info into InboxStyle template.
        .setStyle(new NotificationCompat.InboxStyle()
                .addLine("Alex Faarborg  Check this out")
                .addLine("Jeff Chang    Launch Party")
                .setBigContentTitle("2 new messages")
                .setSummaryText("janedoe@example.com"))
        // Specify which group this notification belongs to.
        .setGroup(GROUP_KEY_WORK_EMAIL)
        // Set this notification as the summary for the group.
        .setGroupSummary(true)
        .build();

NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(emailNotificationId1, newMessageNotification1);
notificationManager.notify(emailNotificationId2, newMessageNotification2);
notificationManager.notify(SUMMARY_ID, summaryNotification);

Die ID der zusammenfassenden Benachrichtigung muss gleich bleiben, damit sie nur einmal gepostet wird und Sie sie später aktualisieren können, wenn sich die zusammenfassenden Informationen ändern. Nachfolgende Ergänzungen zur Gruppe müssen zur Aktualisierung der vorhandenen Zusammenfassung führen.

Einen Beispielcode, in dem Benachrichtigungen verwendet werden, findest du im Beispiel für Android-Benachrichtigungen.

Automatische Gruppierung

Wenn Ihre App unter Android 7.0 (API-Ebene 24) und höher vier oder mehr Benachrichtigungen sendet und keinen Gruppenschlüssel oder keine Gruppenzusammenfassung angibt, gruppiert das System diese möglicherweise automatisch. Benachrichtigungen werden automatisch gruppiert mit einer Gruppenbenachrichtigung angezeigt, die mit Textausschnitten aus einigen der gruppierten Benachrichtigungen gekennzeichnet ist. Der Nutzer kann diese zusammenfassende Benachrichtigung maximieren, um jede einzelne Benachrichtigung zu sehen, wie bei manuell gruppierten Benachrichtigungen.

Das Verhalten der automatischen Gruppierung kann je nach Gerätetyp variieren. Wenn Sie wissen, dass Benachrichtigungen gruppiert werden müssen, geben Sie einen Gruppenschlüssel und eine Gruppenzusammenfassung an, damit sie auf allen Geräten und Versionen optimal gruppiert werden können.