À partir d'Android 8.0 (niveau d'API 26), les badges de notification (également appelés "points de notification") s'affichent sur une icône de lanceur lorsque l'application associée dispose d'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 lanceur qui les prennent en charge, et votre application n'a rien à faire. Toutefois, il peut arriver que vous ne souhaitiez pas que le point de notification s'affiche ou que vous souhaitiez contrôler exactement les notifications qui s'affichent.
Désactiver le badging
Dans certains cas, les badges n'ont pas de sens pour vos notifications. Vous pouvez donc les désactiver par 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 des images, les commandes de lecture multimédia ou les instructions de navigation en cours, n'ont pas de sens en tant que badge.
- Rappels Agenda: évitez d'ajouter un badge aux événements qui se produisent à l'heure actuelle.
- Événements d'horloge ou d'alarme: évitez les notifications de badge liées aux alarmes en cours.
L'exemple de code suivant montre comment masquer les badges d'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ées
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 remplacer ce nombre 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 le nombre représente le nombre total de nouveaux messages.
Pour définir un numéro personnalisé, appelez setNumber()
sur la notification, comme illustré 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 du menu d'une notification en appuyant de manière prolongée
Le menu d'appui prolongé affiche l'icône grande ou petite 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 d'autres exemples de code utilisant des notifications, consultez l'exemple d'application Socialite.