Modifier un badge de notification

À partir d'Android 8.0 (niveau d'API 26), des badges de notification, également appelés "points de notification", apparaissent sur une icône de lanceur lorsque l'application associée a une notification active. Les utilisateurs peuvent appuyer de manière prolongée sur l'icône de l'application pour afficher les notifications, ainsi que les raccourcis d'application, comme illustré dans la figure 1.

Ces points apparaissent par défaut dans les applications de lancement compatibles, et aucune action n'est requise de votre part. Toutefois, il peut arriver que vous ne souhaitiez pas que la pastille de notification s'affiche ou que vous souhaitiez contrôler précisément les notifications qui s'y affichent.

Figure 1 : Badges de notification et menu "Appuyer de manière prolongée".

Désactiver les badges

Dans certains cas, les badges n'ont pas d'intérêt pour vos notifications. Vous pouvez donc les désactiver pour chaque canal en appelant setShowBadge(false) sur votre objet NotificationChannel.

Par exemple, vous pouvez désactiver les badges de notification dans les situations suivantes:

  • Notifications en cours: la plupart des notifications en cours, telles que le traitement d'images, les commandes de lecture multimédia ou les instructions de navigation actuelles, n'ont pas de sens en tant que badge.
  • Rappels de l'agenda: évitez de marquer des événements à l'heure actuelle.
  • Événements de l'horloge ou de l'alarme: évitez d'ajouter un badge aux notifications liées aux alarmes actuelles.

L'exemple de code suivant montre comment masquer les badges sur un canal de notification:

Kotlin

val id = "my_channel_01"
val name = getString(R.string.channel_name)
val descriptionText = getString(R.string.channel_description)
val importance = NotificationManager.IMPORTANCE_LOW
val mChannel = NotificationChannel(id, name, importance).apply {
    description = descriptionText
    setShowBadge(false)
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)

Java

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);

Définir un nombre de notifications personnalisé

Par défaut, chaque notification incrémente un nombre affiché dans le menu "Appuyer de manière prolongée", comme illustré dans la figure 1, mais vous pouvez le remplacer pour votre application. Par exemple, cela peut être utile si vous n'utilisez qu'une seule notification pour représenter plusieurs nouveaux messages, mais que vous souhaitez que ce nombre représente le nombre total de nouveaux messages.

Pour définir un numéro personnalisé, appelez setNumber() dans la notification, comme indiqué ci-dessous:

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build()

Java

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build();

Modifier l'icône de menu en appuyant de manière prolongée sur une notification

Le menu "Appuyer de manière prolongée" affiche la grande ou la petite icône associée à une notification, le cas échéant. Par défaut, le système affiche la grande icône, mais vous pouvez appeler Notification.Builder.setBadgeIconType() et transmettre la constante BADGE_ICON_SMALL pour afficher la petite icône.

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build()

Java

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build();

Masquer un raccourci en double

Si votre application crée une notification qui duplique un raccourci d'application, vous pouvez masquer temporairement le raccourci lorsque la notification est active en appelant setShortcutId().

Pour obtenir plus d'exemples de code utilisant des notifications, consultez l'exemple People (Personnes).