Cómo modificar una insignia de notificación

A partir de Android 8.0 (nivel de API 26), las insignias de notificaciones, también conocidas como puntos de notificación, aparecen en un ícono de selector cuando la aplicación asociada tiene una notificación activa. Los usuarios pueden tocar y mantén presionado el ícono de la aplicación para ver las notificaciones, junto con cualquier accesos directos a aplicaciones, como se muestra figura 1.

Estos puntos aparecen de forma predeterminada en las aplicaciones de selector que los admiten. nada que tu app necesite hacer. Sin embargo, puede haber situaciones en las que no quieres que aparezca el punto de notificación o quieres controlar exactamente qué notificaciones aparecerán allí.

Figura 1: Insignias de notificación y las funciones táctiles y menú de espera.

Cómo inhabilitar las insignias

Hay casos en los que los distintivos no son útiles para tus notificaciones, por lo que puedes inhabilitarlas por canal llamando setShowBadge(false) en tu NotificationChannel .

Por ejemplo, es posible que desees inhabilitar las insignias de notificaciones en las siguientes situaciones: situaciones:

  • Notificaciones continuas: la mayoría de las notificaciones continuas, como el procesamiento de imágenes, controles de reproducción multimedia o instrucciones de navegación actuales, no tienen sentido. como insignia.
  • Recordatorios del calendario: Evita usar insignias en eventos en curso en el momento.
  • Eventos de alarma o reloj: Evita usar notificaciones con insignias relacionadas con alarmas actuales.

El siguiente código de muestra demuestra cómo ocultar insignias para un canal de notificaciones:

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

Cómo establecer un recuento personalizado de notificaciones

De manera predeterminada, cada notificación incrementa el número que se muestra al tocar y en espera como se muestra en la figura 1, pero que puedes anular este número para tu app. Por ejemplo, esto podría ser útil si usas una sola notificación para representan varios mensajes nuevos, pero quieres que el recuento represente el la cantidad total de mensajes nuevos.

Para establecer un número personalizado, llama setNumber() en la notificación, como se muestra a continuación:

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

Modifica los toques y las ícono del menú de espera

Tocar y menú Conservar muestra el ícono grande o pequeño asociado con un notificación si está disponible. De forma predeterminada, el sistema muestra el ícono grande, pero puedes llamar Notification.Builder.setBadgeIconType() y pasa el BADGE_ICON_SMALL constante para mostrar el ícono pequeño.

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

Cómo ocultar un acceso directo duplicado

Si tu app crea una notificación que duplica un acceso directo a una app, puedes ocultar temporalmente el acceso directo mientras la notificación está activa llamando setShortcutId()

Para ver más códigos de muestra que usan notificaciones, consulta el ejemplo de personas.