Modifier un badge de notification

À partir d'Android 8.0 (niveau d'API 26), les badges de notification pastilles de notification : elles apparaissent sur une icône de lanceur lorsque l'application associée dispose d'une notification active. Les utilisateurs peuvent appuyer et appuyez de manière prolongée sur l'icône de l'application pour afficher les notifications, ainsi que les raccourcis d'application, comme indiqué dans figure 1.

Ces points apparaissent par défaut dans les applications de lanceur compatibles et il y a votre application n'a rien à faire. Cependant, il peut y avoir des situations dans lesquelles si vous ne voulez pas que la pastille de notification s'affiche ou si vous voulez contrôler quelles notifications s'y trouvent.

Figure 1 : Badges de notification et commandes tactiles appuyez sur le menu d'appui.

Désactiver les badges

Dans certains cas, les badges n'ont aucun sens pour vos notifications, vous vous pouvez les désactiver pour chaque canal en appelant setShowBadge(false) sur votre NotificationChannel .

Vous pouvez par exemple désactiver les badges de notification dans les situations suivantes:

  • Notifications en cours: la plupart des notifications en cours, telles que le traitement d'image, les commandes de lecture multimédia ou les instructions de navigation actuelles n'ont aucun sens sous forme de badge.
  • Rappels de l'agenda: évitez de marquer des événements à l'heure actuelle.
  • Événements d'horloge ou d'alarme: évitez de recevoir des notifications par badge pour les alarmes en cours.

L'exemple de code suivant montre comment masquer les badges pour 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 le nombre de notifications personnalisé

Par défaut, chaque notification incrémente un nombre affiché sur les écrans tactiles et appui long comme illustré dans la figure 1, mais vous pouvez remplacer ce numéro pour votre application. Cela peut être utile, par exemple, si vous n'utilisez qu'une seule notification plusieurs nouveaux messages, mais que vous souhaitez le nombre total de nouveaux messages.

Pour définir un numéro personnalisé, appelez setNumber() sur 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'appui sur une notification icône de menu de manière prolongée

Le toucher et affiche la grande ou la petite icône associée à notification, le cas échéant. Par défaut, le système affiche la grande icône, mais tu peux appeler Notification.Builder.setBadgeIconType() et transmettez 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 d'autres exemples de code utilisant des notifications, consultez l'exemple "People".