Descripción general de notificaciones

Una notificación es un mensaje que Android muestra fuera de la IU de tu app para proporcionarle al usuario recordatorios, comunicaciones con otras personas y otro tipo de información oportuna de la app. Los usuarios pueden presionar la notificación para abrir la app o realizar una acción directamente desde la notificación.

En esta página, se proporciona una descripción general acerca de dónde aparecen las notificaciones y cuáles son las características disponibles. Para comenzar a compilar notificaciones, lee Cómo crear una notificación.

Para obtener más información sobre el diseño de notificaciones y los patrones de interacción, consulta la guía de diseño de notificaciones.

Presentación en un dispositivo

Las notificaciones se muestran automáticamente a los usuarios en diferentes ubicaciones y formatos. Una notificación aparece como un ícono en la barra de estado, una entrada más detallada en el panel lateral de notificaciones y una insignia en el ícono de la app. Las notificaciones también aparecen en wearables vinculados.

Barra de estado y panel lateral de notificaciones

Cuando llega una notificación, aparece primero como un ícono en la barra de estado.

Figura 1: Los íconos de notificaciones aparecen en el lado izquierdo de la barra de estado.

Los usuarios pueden deslizar el dedo hacia abajo en la barra de estado para abrir el panel lateral de notificaciones, en el que pueden ver más detalles y realizar acciones desde la notificación.

Figura 2: Notificaciones en el panel lateral de notificaciones

Los usuarios pueden arrastrar hacia abajo una notificación del panel lateral para abrir la vista expandida, que muestra contenido adicional y botones de acción, de haberlos. A partir de Android 13, esta vista expandida incluye un botón que les permite a los usuarios detener una app que tiene servicios en primer plano en curso.

Una notificación permanece visible en el panel lateral hasta que la app o el usuario la descartan.

Notificación emergente

A partir de Android 5.0, las notificaciones pueden aparecer brevemente en una ventana flotante llamada notificación emergente. Por lo general, este comportamiento se usa en notificaciones importantes que el usuario necesita saber de inmediato y solo aparece si el dispositivo está desbloqueado.

Figura 3: Aparecerá una notificación de atención delante de la app en primer plano.

La notificación de atención aparece cuando la app emite la notificación. Desaparece después de un momento, pero permanecerá visible en el panel lateral de notificaciones como de costumbre.

Entre las condiciones que pueden activar notificaciones de atención, se incluyen las siguientes:

  • La actividad del usuario se encuentra en el modo de pantalla completa, como cuando la app usa fullScreenIntent.

  • La notificación tiene prioridad alta y usa tonos o vibraciones en dispositivos con Android 7.1 (nivel de API 25) y versiones anteriores.

  • El canal de notificaciones tiene importancia alta en los dispositivos que ejecutan Android 8.0 (nivel de API 26) y versiones posteriores.

Bloquear la pantalla

A partir de Android 5.0, las notificaciones pueden aparecer en la pantalla de bloqueo.

Puedes configurar de manera programática si las notificaciones que publica tu app se muestran en una pantalla de bloqueo segura y, de ser así, el nivel de detalle visible.

Los usuarios pueden utilizar la configuración del sistema para elegir el nivel de detalle visible en las notificaciones de la pantalla de bloqueo o para inhabilitar todas las notificaciones de la pantalla de bloqueo. A partir de Android 8.0, los usuarios pueden inhabilitar o habilitar las notificaciones en la pantalla de bloqueo para cada canal de notificaciones.

Figura 4: Notificaciones en la pantalla de bloqueo con contenido sensible oculto.

Para obtener más información, consulta Cómo configurar la visibilidad de la pantalla de bloqueo.

Insignia en el ícono de la app

En los selectores compatibles en dispositivos con Android 8.0 (nivel de API 26) y versiones posteriores, los íconos de las apps indican notificaciones nuevas con una insignia de color, conocida como punto de notificación, en el ícono de selector de aplicaciones correspondiente.

Los usuarios pueden mantener presionado el ícono de una app para ver las notificaciones de esa app. Pueden descartar las notificaciones o interactuar con ellas desde ese menú, de manera similar al panel lateral de notificaciones.

Figura 5: Insignias de notificaciones y menú de mantener presionado.

Para obtener más información sobre cómo funcionan las insignias, consulta Cómo modificar una insignia de notificación.

Dispositivos con Wear OS

Si el usuario tiene un dispositivo Wear OS vinculado, todas las notificaciones aparecerán allí automáticamente, incluidos los detalles y los botones de acción expandibles.

Para mejorar la experiencia, puedes personalizar el aspecto de tus notificaciones en wearables y proporcionar diferentes acciones, como respuestas sugeridas y respuestas de entrada de voz. Si quieres obtener más información, consulta cómo agregar funciones específicas para wearables a tu notificación.

Figura 6: Las notificaciones aparecen automáticamente en un dispositivo Wear OS vinculado.

Anatomía de las notificaciones

El diseño de una notificación está determinado por las plantillas del sistema, y tu app define el contenido de cada parte de la plantilla. Algunos detalles de la notificación solo aparecen en la vista expandida.

Figura 7: Notificación con detalles básicos

Las partes más comunes de una notificación se indican en la figura 7:

  1. Ícono pequeño: Obligatorio; se establece con setSmallIcon().
  2. Nombre de la app: proporcionado por el sistema
  3. Marca de tiempo: La proporciona el sistema, pero puedes anularla con setWhen(), o bien ocultarla con setShowWhen(false).
  4. Ícono grande: Opcional; generalmente se usa solo para fotos de contacto. No lo uses como ícono de la app. Se establece con setLargeIcon().
  5. Título: opcional; establecido con setContentTitle()
  6. Texto: opcional; se establece con setContentText().

Te recomendamos que uses plantillas del sistema para lograr una compatibilidad de diseño adecuada en todos los dispositivos. Si es necesario, puedes crear un diseño de notificación personalizado.

Si quieres obtener más información para crear una notificación con estas funciones y mucho más, lee Cómo crear una notificación.

Acciones de la notificación

Si bien no es obligatorio, se recomienda que cada notificación abra una actividad adecuada en la app cuando se presiona. Además de esta acción de notificación predeterminada, puedes agregar botones de acción que completen una tarea relacionada con la app desde la notificación (a menudo, sin abrir una actividad), como se muestra en la Figura 8.

Figura 8: Una notificación con botones de acción.

A partir de Android 7.0 (nivel de API 24), puedes agregar una acción para responder a los mensajes o ingresar otro texto directamente desde la notificación.

A partir de Android 10 (nivel de API 29), la plataforma puede generar automáticamente botones para acciones basadas en intenciones sugeridas.

En Cómo crear una notificación, se explica con más detalle cómo agregar botones de acción.

Cómo solicitar que se desbloquee el dispositivo

Es probable que los usuarios vean acciones de notificación en la pantalla de bloqueo del dispositivo. Si una acción de notificación hace que una app inicie una actividad o envíe una respuesta directa, los usuarios deben desbloquear el dispositivo para que la app pueda invocar esa acción de notificación.

En Android 12 (nivel de API 31) y versiones posteriores, puedes configurar una acción de notificación, de modo que el dispositivo se deba desbloquear para que tu app invoque esa acción, independientemente del flujo de trabajo que inicie la acción. Esta opción agrega una capa de seguridad adicional a las notificaciones en dispositivos bloqueados.

Para exigir que se desbloquee el dispositivo antes de que tu app invoque una acción de notificación determinada, pasa true a setAuthenticationRequired() cuando crees la acción de notificación, como se muestra en el siguiente fragmento de código:

Kotlin

val moreSecureNotification = Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build()

Java

Notification moreSecureNotification = new Notification.Action.Builder(...)

    // This notification always requests authentication when invoked
    // from a lock screen.
    .setAuthenticationRequired(true)
    .build();

Notificación expandible

De forma predeterminada, el contenido de texto de la notificación se trunca para que quepa en una línea. Si deseas que la notificación sea más larga, puedes habilitar un área de texto más grande que se pueda expandir. Para ello, aplica una plantilla adicional, como se muestra en la figura 9.

Figura 9: Notificación expandible para texto grande

También puedes crear una notificación expandible con una imagen, con estilo de bandeja de entrada, con una conversación de chat o con controles de reproducción multimedia. Para obtener más información, consulta Cómo crear una notificación expandible.

Actualizaciones de notificaciones y grupos

Para evitar inundar a tus usuarios con múltiples notificaciones o redundantes cuando tengas actualizaciones adicionales, actualiza una notificación existente en lugar de emitir una nueva o usa la notificación en la bandeja de entrada para mostrar las actualizaciones de la conversación.

Sin embargo, si es necesario enviar varias notificaciones, puedes agrupar las independientes en un grupo, disponible en Android 7.0 y versiones posteriores.

Un grupo de notificaciones te permite contraer varias notificaciones en una publicación en el panel lateral de notificaciones con un resumen. El usuario puede expandir progresivamente el grupo de notificaciones y cada una de ellas para obtener más detalles, como se muestra en la Figura 10.

Figura 10: Un grupo de notificaciones contraído y expandido.

Si quieres saber cómo agregar notificaciones a un grupo, consulta Cómo crear un grupo de notificaciones.

Canales de notificaciones

A partir de Android 8.0 (nivel de API 26), todas las notificaciones deben asignarse a un canal o no aparecerán. Esto permite a los usuarios inhabilitar canales de notificaciones específicos para tu app en lugar de inhabilitar todas las notificaciones. Los usuarios pueden controlar las opciones visuales y auditivas de cada canal desde la configuración del sistema Android, como se muestra en la Figura 11. Los usuarios también pueden mantener presionada una notificación para cambiar los comportamientos del canal asociado.

En los dispositivos que ejecutan Android 7.1 (nivel de API 25) y versiones anteriores, los usuarios solo pueden administrar las notificaciones por app. Cada app efectivamente tiene solo un canal en Android 7.1 y versiones anteriores.

Figura 11: Configuración de notificaciones para la app de Reloj y uno de sus canales

Una app puede tener canales independientes para cada tipo de notificación que emita la app. Una app también puede crear canales de notificaciones en respuesta a las elecciones realizadas por los usuarios. Por ejemplo, puedes configurar canales de notificaciones independientes para cada grupo de conversación que crea un usuario en una app de mensajería.

El canal también es donde especificas el nivel de importancia de tus notificaciones en Android 8.0 y versiones posteriores, por lo que todas las notificaciones publicadas en el mismo canal de notificaciones tienen el mismo comportamiento. Esto se describe en la siguiente sección.

Para obtener más información, consulta Cómo crear y administrar canales de notificaciones.

Importancia de la notificación

Android usa la importancia de una notificación para determinar en qué medida la notificación interrumpe al usuario de manera visual y auditiva. Cuanto mayor sea la importancia de una notificación, mayor será el nivel de interrupción.

En Android 7.1 (nivel de API 25) y versiones anteriores, el objeto priority de la notificación determina la importancia de una notificación.

En Android 8.0 (nivel de API 26) y versiones posteriores, se determina la importancia de una notificación por el importance del canal al que se publica. Los usuarios pueden cambiar la importancia de un canal de notificaciones en la configuración del sistema, como se muestra en la Figura 12.

Figura 12: Los usuarios pueden cambiar la importancia de cada canal en Android 8.0 y versiones posteriores.

Los posibles niveles de importancia y los comportamientos de notificación asociados son los siguientes:

  • Urgente: emite un sonido y aparece como una notificación de atención.

  • Alta: emite un sonido.

  • Media: sin sonido.

  • Bajo: No emite sonido y no aparece en la barra de estado.

Todas las notificaciones, independientemente de su importancia, aparecen en ubicaciones no disruptivas de la IU del sistema, por ejemplo, en el panel lateral de notificaciones o como una insignia en el ícono de selector. Sin embargo, puedes modificar el aspecto de la insignia de notificación.

Para obtener más información, lee sobre cómo establecer la importancia.

Modo No interrumpir

A partir de Android 5.0 (nivel de API 21), los usuarios pueden habilitar el modo No interrumpir, que silencia el sonido y la vibración de todas las notificaciones. Las notificaciones seguirán apareciendo en la IU del sistema de manera normal, a menos que el usuario especifique lo contrario.

Hay tres niveles disponibles en el modo No interrumpir:

  • Silencio total: bloquea todos los sonidos y vibraciones, incluso de alarmas, música, videos y juegos.
  • Solo alarmas: bloquea todos los sonidos y vibraciones, excepto las alarmas.
  • Solo prioridad: Los usuarios pueden configurar qué categorías de todo el sistema pueden interrumpirlos, como solo alarmas, recordatorios, eventos, llamadas o mensajes. Para mensajes y llamadas, los usuarios pueden filtrar según el remitente o el emisor, como se muestra en la Figura 13.

Figura 13: Los usuarios pueden permitir notificaciones según categorías de todo el sistema (izquierda) y remitente o emisor (derecha).

En Android 8.0 (nivel de API 26) y versiones posteriores, los usuarios también pueden permitir notificaciones para categorías específicas de apps, también conocidas como canales, anulando la función No interrumpir canal por canal. Por ejemplo, una app de pagos podría tener canales para notificaciones relacionadas con retiros y depósitos. El usuario puede permitir notificaciones de retiro, de depósito o ambas en el modo de prioridad.

En los dispositivos que ejecutan Android 7.1 (nivel de API 25) y versiones anteriores, los usuarios pueden permitir las notificaciones app por app, en lugar de hacerlo canal por canal.

Para configurar las notificaciones de esta configuración del usuario, debes configurar una categoría para todo el sistema.

Notificaciones para servicios en primer plano

Se requiere una notificación cuando la app está ejecutando un servicio en primer plano, es decir, un Service en ejecución en segundo plano que es de larga duración y visible para el usuario, como un reproductor multimedia. Esta notificación no se puede descartar como otras notificaciones. Para quitar la notificación, el servicio debe detenerse o quitarse del estado en primer plano.

Para obtener más información, consulta Servicios en primer plano. Si estás compilando un reproductor de contenido multimedia, también puedes leer Cómo reproducir contenido multimedia en segundo plano.

Límites de publicaciones

A partir de Android 8.1 (nivel de API 27), las apps no pueden hacer que una notificación suene más de una vez por segundo. Si tu app publica varias notificaciones en un segundo, todas aparecen normalmente, pero solo la primera de cada segundo emite un sonido.

Sin embargo, Android también aplica un límite de frecuencia de actualización de notificaciones. Si publicas actualizaciones de una sola notificación con demasiada frecuencia (por ejemplo, muchas en menos de un segundo), es posible que el sistema las quite.

Compatibilidad de notificaciones

La IU del sistema de notificaciones de Android y las APIs relacionadas con las notificaciones evolucionan de manera continua. Para usar las funciones más recientes de la API de notificaciones y admitir dispositivos más antiguos, usa la API de notificaciones de la biblioteca de compatibilidad, NotificationCompat y sus subclases, así como NotificationManagerCompat. Esto te permite evitar escribir código condicional para verificar los niveles de API, ya que estas APIs lo controlan.

NotificationCompat se actualiza a medida que evoluciona la plataforma para incluir los métodos más recientes. Sin embargo, la disponibilidad de un método en NotificationCompat no garantiza que se proporcione la función correspondiente en dispositivos más antiguos. En algunos casos, llamar a una API recientemente introducida da como resultado una no-op en dispositivos más antiguos.

El siguiente es un resumen de los cambios de comportamiento más notables por nivel de API para las notificaciones de Android.

Android 5.0 (nivel de API 21)

  • Presentamos la pantalla de bloqueo y las notificaciones emergentes.

  • Permite que el usuario configure el teléfono en el modo No interrumpir y configure qué notificaciones pueden interrumpirlo cuando el dispositivo está en modo de solo prioridad.

  • Agrega métodos para definir si una notificación se muestra en la pantalla de bloqueo, como setVisibility(), y para especificar una versión "pública" del texto de la notificación.

  • Se agregó el método setPriority(), que le indica al sistema el nivel de interrupción de la notificación. Por ejemplo, si se establece la prioridad en alta, la notificación aparecerá como una notificación de atención.

  • Agrega compatibilidad con pilas de notificaciones a dispositivos Android Wear (ahora llamado Wear OS). Agrupa notificaciones en una pila con setGroup(). Las pilas de notificaciones, conocidas más adelante como grupo o paquete, no se admiten en tablets ni teléfonos hasta Android 7.0 (nivel de API 24).

Android 7.0 (nivel de API 24)

  • Cambia el estilo de las plantillas de notificaciones para destacar la imagen de héroe y el avatar.

  • Se agregaron tres plantillas de notificaciones: una para apps de mensajería y las otras dos para decorar vistas de contenido personalizado con la posibilidad expandible y otras decoraciones del sistema.

  • Se agregó compatibilidad con dispositivos de mano, como teléfonos y tablets, para grupos de notificaciones. Usa la misma API que las pilas de notificaciones de Android Wear (ahora denominado Wear OS) introducidas en Android 5.0 (nivel de API 21).

  • Permite que los usuarios respondan en una notificación con una respuesta en línea. Pueden ingresar texto, que luego se enruta a la app superior de la notificación.

Android 8.0 (nivel de API 26)

  • Permite que las notificaciones individuales se coloquen en un canal específico.

  • Permite a los usuarios desactivar las notificaciones por canal, en lugar de desactivar todas las notificaciones de una app.

  • Hace que las apps con notificaciones activas muestren una insignia de notificación sobre el ícono de la app en la pantalla principal o del selector.

  • Permite a los usuarios posponer una notificación desde el panel lateral. Puedes establecer un tiempo de espera automático para una notificación.

  • Te permite configurar el color de fondo de la notificación.

  • Traslada algunas APIs sobre los comportamientos de notificaciones de Notification a NotificationChannel. Por ejemplo, usa NotificationChannel.setImportance() en lugar de NotificationCompat.Builder.setPriority() para Android 8.0 y versiones posteriores.

Android 13.0 (nivel de API 33)

Android 14.0 (nivel de API 34)

  • Limita las notificaciones de intents de pantalla completa a las apps que proporcionan llamadas y alarmas. Usa la API de NotificationManager.canUseFullScreenIntent para verificar si la app tiene permiso. De lo contrario, la app puede usar ACTION_MANAGE_APP_USE_FULL_SCREEN_INTENT para iniciar la página de configuración en la que los usuarios pueden otorgar el permiso.

  • Cambia la forma en que los usuarios experimentan notificaciones que no se pueden descartar, ya que les permite descartar la acción de notificaciones incluso cuando está configurada la marca Notification.FLAG_ONGOING_EVENT. Esto no se aplica a las notificaciones de CallStyle si se configura la marca Notification.FLAG_ONGOING_EVENT o del controlador de políticas del dispositivo (DPC) y los paquetes de asistencia para empresas. Esto tampoco se aplica cuando el teléfono está bloqueado o si el usuario selecciona Borrar todo.