Benachrichtigungsgruppe erstellen

Ab Android 7.0 (API-Ebene 24) kannst du zugehörige Benachrichtigungen in einer Gruppe anzeigen lassen. Wenn Ihre App beispielsweise Benachrichtigungen zu empfangenen E-Mails anzeigt, sollten Sie alle Benachrichtigungen zu neuen E-Mails in dieselbe Gruppe einordnen, damit sie zusammen minimiert werden.

Fügen Sie zur Unterstützung älterer Versionen eine Zusammenfassungsbenachrichtigung hinzu, die alle separaten Benachrichtigungen zusammenfasst. Am besten eignet sich dafür die Benachrichtigung im Posteingangsstil.

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

Verwenden Sie Benachrichtigungsgruppen, wenn alle 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 Vorteile, die Benachrichtigungen für untergeordnete Konten einzeln anzuzeigen. Beispiel:

    • Sie sind entscheidungsrelevant und umfassen für jede Benachrichtigung spezifische Aktionen.

    • In jeder Benachrichtigung sind weitere Informationen für den Nutzer zu sehen.

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

Gruppe erstellen und Benachrichtigung hinzufügen

Um eine Benachrichtigungsgruppe zu erstellen, müssen Sie einen eindeutigen String für die Gruppe definieren. Rufen Sie dann für jede Benachrichtigung, die Sie in der Gruppe erhalten möchten, setGroup() auf und geben Sie den Gruppennamen an. Beispiel:

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 nach dem Zeitpunkt ihrer Veröffentlichung sortiert. Sie können die Reihenfolge jedoch ä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 einen Ton ausgeben soll, müssen alle untergeordneten Elemente in der Gruppe das Verhalten für Gruppenbenachrichtigungen 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. Um gruppierte Benachrichtigungen zu aktivieren, müssen Sie eine Gruppenzusammenfassung festlegen. Diese Gruppenübersicht muss einen Teil des Texts aus jeder anderen Benachrichtigung in der Gruppe enthalten, damit Nutzer verstehen, was in der Gruppe enthalten ist. Wie die Gruppenübersicht angezeigt wird, hängt von der Android-Version ab:

  • Unter Android-Versionen niedriger als 7.0 (API-Ebene 24), auf denen keine verschachtelte Gruppe von Benachrichtigungen angezeigt werden kann, zeigt das System nur die Benachrichtigung mit der Gruppenübersicht an und blendet alle anderen aus. Der Nutzer kann auf die Benachrichtigung mit der Gruppenübersicht tippen, um Ihre App zu öffnen.

  • Unter Android 7.0 und höher zeigt das System die Benachrichtigung mit der Gruppenübersicht als verschachtelte Gruppe von Benachrichtigungen an, die mit Textausschnitten aus den einzelnen gruppierten Benachrichtigungen gekennzeichnet sind. 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 in neueren Android-Versionen der von dir entworfene Text der Gruppenzusammenfassung nicht angezeigt wird, musst du eine Zusammenfassung immer manuell festlegen, um gruppierte Benachrichtigungen zu aktivieren. Das Verhalten der Gruppenzusammenfassung kann auf einigen Gerätetypen wie etwa Wearables variieren. Wenn du Rich Content in deiner Gruppenzusammenfassung festlegst, kannst du auf allen Geräten und in allen Versionen dafür sorgen, dass die Inhalte optimal dargestellt werden.

So fügen Sie eine Gruppenübersicht hinzu:

  1. Erstellen Sie eine neue Benachrichtigung mit einer Beschreibung der Gruppe. Am besten eignet sich dafür die Benachrichtigung im Posteingangsstil.

  2. Fügen Sie der Gruppe die Zusammenfassungsbenachrichtigung hinzu, indem Sie setGroup() aufrufen.

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

Im folgenden Codebeispiel wird gezeigt, wie eine Gruppenübersicht erstellt wird:

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 Zusammenfassungsbenachrichtigung muss gleich bleiben, damit sie nur einmal gepostet wird und Sie sie später aktualisieren können, wenn sich die Zusammenfassungsinformationen ändern. Nachfolgende Ergänzungen zur Gruppe müssen dazu führen, dass die vorhandene Zusammenfassung aktualisiert wird.

Beispielcode für Benachrichtigungen finden Sie im Beispiel für Android-Benachrichtigungen.

Automatische Gruppierung

Wenn Ihre App unter Android 7.0 (API-Level 24) oder höher Benachrichtigungen sendet und keinen Gruppenschlüssel oder keine Gruppenübersicht angibt, werden sie vom System möglicherweise automatisch gruppiert. Automatisch gruppierte Benachrichtigungen werden in einer Gruppenzusammenfassungsbenachrichtigung angezeigt, die mit Textausschnitten aus einigen der gruppierten Benachrichtigungen gekennzeichnet ist. Der Nutzer kann diese zusammenfassende Benachrichtigung maximieren, um jede einzelne Benachrichtigung anzuzeigen, wie bei manuell gruppierten Benachrichtigungen.

Das automatische Gruppierungsverhalten kann bei einigen Gerätetypen variieren. Wenn Sie wissen, dass Benachrichtigungen gruppiert werden müssen, geben Sie einen Gruppenschlüssel und eine Gruppenübersicht an, damit sie auf allen Geräten und Versionen optimal angezeigt werden.