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.