Benachrichtigungsgruppe erstellen

Ab Android 7.0 (API-Level 24) können Sie verwandte Benachrichtigungen in einer Gruppe anzeigen. Wenn Ihre App beispielsweise Benachrichtigungen für empfangene E‑Mails anzeigt, sollten Sie alle Benachrichtigungen für neue E‑Mail-Nachrichten in derselben Gruppe zusammenfassen.

Für niedrigere Versionen können Sie eine Zusammenfassungsbenachrichtigung hinzufügen, die allein angezeigt wird und alle separaten Benachrichtigungen zusammenfasst. Eine Benachrichtigung im Posteingangsstil ist die übliche Methode dafür.

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

Wenn alle folgenden Bedingungen auf Ihren Anwendungsfall zutreffen, verwenden Sie Benachrichtigungsgruppen:

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

  • Es ist von Vorteil, die untergeordneten Benachrichtigungen einzeln anzuzeigen. Beispiel:

    • Sie haben Aktionen, die für jede Benachrichtigung spezifisch sind.

    • Jede Benachrichtigung enthält weitere Informationen für den Nutzer.

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 Benachrichtigung hinzufügen

Wenn Sie eine Benachrichtigungsgruppe erstellen möchten, definieren Sie eine eindeutige Kennung für die Gruppe. Rufen Sie dann für jede Benachrichtigung, die in der Gruppe enthalten sein soll, setGroup, übergeben Sie den Gruppennamen. Beispiel:

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

Standardmäßig werden Benachrichtigungen nach dem Zeitpunkt sortiert, zu dem sie gesendet wurden. Sie können die Reihenfolge jedoch mit setSortKey ändern.

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, muss für alle untergeordneten Elemente in der Gruppe das Gruppenbenachrichtigungsverhalten GROUP_ALERT_SUMMARYfestgelegt sein. 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 Sie gruppierte Benachrichtigungen aktivieren möchten, müssen Sie eine Gruppenzusammenfassung festlegen. Diese Gruppenzusammenfassung muss einen Teil des Texts aus jeder der anderen Benachrichtigungen in der Gruppe enthalten, damit der Nutzer weiß, was in der Gruppe enthalten ist. Wie die Gruppenzusammenfassung angezeigt wird, hängt von der Android-Version ab:

  • In Android-Versionen vor 7.0 (API-Level 24) kann keine verschachtelte Gruppe von Benachrichtigungen angezeigt werden. Daher wird nur die Gruppenzusammenfassungsbenachrichtigung angezeigt und alle anderen werden ausgeblendet. Der Nutzer kann auf die Gruppenzusammenfassungsbenachrichtigung tippen, um Ihre App zu öffnen.

  • In Android 7.0 und höher wird die Gruppenzusammenfassungsbenachrichtigung als verschachtelte Gruppe von Benachrichtigungen angezeigt, die mit Textausschnitten aus jeder gruppierten Benachrichtigung gekennzeichnet sind. Der Text, den Sie für die Gruppenzusammenfassungsbenachrichtigung 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 höheren Android-Versionen der von Ihnen erstellte Text der Gruppenzusammenfassung nicht angezeigt wird, müssen Sie manuell eine Zusammenfassung festlegen, um gruppierte Benachrichtigungen zu aktivieren. Das Verhalten der Gruppenzusammenfassung kann bei einigen Gerätetypen wie Wearables variieren. Wenn Sie Rich-Content für die Gruppenzusammenfassung festlegen, können Sie auf allen Geräten und in allen Versionen die bestmögliche Nutzererfahrung bieten.

So fügen Sie eine Gruppenzusammenfassung hinzu:

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

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

  3. Geben Sie an, dass sie als Gruppenzusammenfassung verwendet werden soll, indem Sie setGroupSummary(true) aufrufen.

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

// 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)
}

Die ID der Zusammenfassungsbenachrichtigung muss gleich bleiben, damit sie nur einmal gesendet wird und Sie sie später aktualisieren können, wenn sich die Zusammenfassungsinformationen ändern. Bei nachfolgenden Ergänzungen der Gruppe muss die vorhandene Zusammenfassung aktualisiert werden.

Automatische Gruppierung

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

Das Verhalten bei der automatischen Gruppierung kann bei einigen Gerätetypen variieren. Wenn Sie wissen, dass Benachrichtigungen gruppiert werden müssen, sollten Sie einen Gruppenschlüssel und eine Gruppenzusammenfassung angeben, um die bestmögliche Nutzererfahrung auf allen Geräten und in allen Versionen zu bieten.