Créer un groupe de notifications

À partir d'Android 7.0 (niveau d'API 24), vous pouvez afficher les notifications associées dans un groupe. Par exemple, si votre application affiche des notifications pour les e-mails reçus, saisissez Toutes les notifications pour les nouveaux e-mails d'un même groupe afin qu'elles soient réduites ensemble.

Pour prendre en charge les anciennes versions, ajoutez une notification récapitulative qui s'affiche seule pour résumer toutes les notifications distinctes. Pour ce faire, il est préférable d'utiliser de type boîte de réception.

Figure 1 : Une vue réduite (en haut) et développée (en bas) groupe de notifications.

Utilisez des groupes de notifications si toutes les conditions suivantes sont remplies cas:

  • Les notifications enfants sont des notifications complètes et peuvent être affichées individuellement sans avoir besoin de résumé de groupe.

  • Il est avantageux d'afficher les notifications enfants individuellement. Exemple :

    • Ils sont exploitables, avec des actions spécifiques à chaque notification.

    • Chaque notification contient davantage d'informations visibles par l'utilisateur.

Si vos notifications ne répondent pas aux critères précédents, envisagez plutôt mettre à jour une notification existante avec de nouvelles informations ou la création d'un style de message de notification pour afficher plusieurs mises à jour dans la même conversation.

Créer un groupe et y ajouter une notification

Pour créer un groupe de notifications, définissez une chaîne d'identifiant unique pour le groupe. Ensuite, pour chaque notification à ajouter au groupe, appelez setGroup(), en transmettant le nom du groupe. Exemple :

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

Par défaut, les notifications sont triées en fonction de leur date de publication, mais vous pouvez modifier l'ordre en appelant setSortKey()

Si les alertes d'un groupe de notification doivent être gérées notification, appel setGroupAlertBehavior() Par exemple, si vous souhaitez que seul le résumé de votre groupe Le comportement d'alerte du groupe doit être appliqué aux enfants du groupe GROUP_ALERT_SUMMARY Les autres options sont GROUP_ALERT_ALL et GROUP_ALERT_CHILDREN

Définir un résumé de groupe

Les notifications groupées doivent comporter une notification supplémentaire faisant office de groupe résumé. Pour activer les notifications groupées, vous devez définir un résumé de groupe. Ce le résumé de groupe doit inclure une partie du texte de chacune des autres notifications dans le groupe pour aider l’utilisateur à comprendre ce qu’il y a dans le groupe. Comment le groupe s'affiche selon la version d'Android:

  • Sur les versions d'Android antérieures à 7.0 (niveau d'API 24), qui ne peut pas afficher de d'un groupe de notifications, le système n'affiche que le récapitulatif notification et masque tous les autres. L'utilisateur peut appuyer sur le résumé du groupe pour ouvrir l'application.

  • Sur Android 7.0 ou version ultérieure, le système affiche la notification récapitulative de votre groupe sous la forme d'un groupe imbriqué de notifications, étiquetées avec des extraits de texte provenant de chacune notification groupée. Le texte que vous avez défini pour le groupe n'est pas affiché notification récapitulative. L'utilisateur peut développer le groupe imbriqué de notifications pour afficher les notifications individuelles du groupe, comme illustré dans la figure 1.

Même si les versions plus récentes d'Android n'affichent pas le texte de résumé du groupe que vous conception, vous devez toujours définir manuellement un résumé pour activer les notifications. Le comportement du résumé de groupe peut varier sur certains appareils tels que les accessoires connectés. Ajouter du contenu enrichi dans le résumé de votre groupe aide offrent une expérience optimale sur tous les appareils et toutes les versions.

Pour ajouter un résumé de groupe, procédez comme suit:

  1. Créer une notification avec une description du groupe (souvent mieux avec l'interface de boîte de réception notification.

  2. Ajoutez la notification récapitulative au groupe en appelant setGroup().

  3. Spécifiez qu'elle doit être utilisée comme résumé du groupe en appelant setGroupSummary(true)

Le code suivant montre un exemple de création d'un résumé de groupe:

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("[email protected]"))
        // 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("[email protected]"))
        // 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);

L'identifiant de la notification récapitulative doit rester le même pour qu'elle ne soit publiée qu'une seule fois et afin que vous puissiez le mettre à jour plus tard si les informations du récapitulatif changent. Suivant tout ajout au groupe doit entraîner la mise à jour du résumé existant.

Pour obtenir un exemple de code utilisant des notifications, consultez la section Notifications Android Exemple pour en savoir plus.

Regroupement automatique

Sur Android 7.0 (niveau d'API 24) ou version ultérieure, si votre application envoie quatre API ou plus et ne spécifie pas de clé ni de résumé de groupe, le système peut les regrouper automatiquement. Les notifications regroupées s'affichent automatiquement avec une notification récapitulative contenant des extraits de texte provenant de certains des des notifications groupées. L'utilisateur peut développer cette notification récapitulative pour afficher une notification individuelle, comme pour les notifications regroupées manuellement.

Le comportement du regroupement automatique peut varier selon le type d'appareil. Afin de fournir la meilleure sur tous les appareils et dans toutes les versions, si vous savez que les notifications doivent être regroupés, spécifiez une clé de groupe et un résumé de groupe pour vous assurer qu'ils sont regroupés.