The Android Developer Challenge is back! Submit your idea before December 2.

Descripción general de las notificaciones

Una notificación es un mensaje que Android muestra fuera de la IU de tu app para proporcionar al usuario recordatorios, mensajes de otras personas y demás información oportuna de tu app. Los usuarios pueden presionar la notificación para realizar una acción directamente desde ella o abrir la app en cuestión.

En esta página, se proporciona una descripción general de dónde aparecen las notificaciones y las funciones disponibles. Si quieres empezar a crear notificaciones, lee Cómo crear una notificación.

Para obtener más información sobre los patrones de interacción y diseño, consulta la Guía sobre el diseño de notificaciones. Además, consulta la Muestra de notificaciones de Android para obtener prácticas recomendadas sobre cómo usar la API de Notification.Style en apps para dispositivos móviles y wearables.

Apariciones en un dispositivo

Las notificaciones se muestran a los usuarios en diferentes ubicaciones y formatos, como un ícono en la barra de estado, una entrada más detallada en el panel lateral y una insignia en el ícono de la app, o bien automáticamente en wearables sincronizados.

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, donde pueden ver más detalles e interactuar con la notificación.

Figura 2: Notificaciones en el panel lateral de notificaciones

Los usuarios pueden arrastrar una notificación hacia abajo en el panel lateral para revelar una vista ampliada, que muestra contenido adicional y botones de acción (si los hay).

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

Notificación emergente

A partir de Android 5.0, las notificaciones pueden aparecer brevemente en una ventana flotante denominada emergente. Este comportamiento es común en notificaciones importantes que el usuario debe ver al instante, y solo aparece si el dispositivo está desbloqueado.

Figura 3: Aparece una notificación emergente delante de la app en primer plano

La notificación emergente aparece cuando tu app emite la notificación y desaparece después de unos segundos, pero permanece visible en el panel lateral, como de costumbre.

Algunos ejemplos de condiciones que podrían desencadenar notificaciones emergentes son las siguientes:

  • La actividad del usuario se encuentra en el modo de pantalla completa (la app usa fullScreenIntent).
  • La notificación tiene prioridad alta y utiliza tonos de llamada o vibraciones en dispositivos que ejecutan Android 7.1 (API nivel 25) o versiones anteriores.
  • El canal de notificaciones es de suma importancia en los dispositivos que ejecutan Android 8.0 (API nivel 26) y versiones posteriores.

Pantalla bloqueada

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

Puedes establecer de forma programática el nivel de los detalles visibles o incluso si se va a mostrar o no la notificación de tu app en la pantalla bloqueada.

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

Figura 4: Notificaciones en la pantalla bloqueada con contenido sensible oculto

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

Insignia en el ícono de la app

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

Los usuarios pueden presionar el ícono de una app para ver las notificaciones de esa app. También pueden descartar las notificaciones o interactuar con ellas desde ese menú, de forma similar al panel lateral.

Figura 5: Insignias de notificaciones y menú de pulsación prolongada

Para obtener más información sobre cómo funcionan las insignias, lee Insignias de notificaciones.

Dispositivos Wear OS

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

También puedes mejorar la experiencia personalizando algunas apariencias para las notificaciones de wearables y proporcionar diferentes acciones, incluidas respuestas sugeridas y de entrada de voz. Para obtener más información, consulta cómo agregar funciones específicas para wearables en tus notificaciones.

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

Anatomía de las notificaciones

El diseño de una notificación se determina mediante plantillas del sistema: tu app simplemente 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 de la siguiente manera:

  1. Ícono pequeño: Es necesario y se configura con setSmallIcon().
  2. Nombre de la app: Lo proporciona el sistema.
  3. Marca de tiempo: La proporciona el sistema, pero puedes anularla con setWhen() o bien ocultarla con setShowWhen(false).
  4. Ícono grande: Es opcional (por lo general, se usa solo para fotos de contacto; no lo uses para el ícono de tu app) y se configura con setLargeIcon().
  5. Título: Es opcional y se configura con setContentTitle().
  6. Texto Es opcional y se configura con setContentText().

Para obtener más información sobre cómo crear una notificación con estas funciones y muchas más, lee Cómo crear una notificación.

Acciones de notificaciones

Aunque no es necesario, todas las notificaciones deberían abrir una actividad de la app adecuada cuando se las presione. Además de esta acción de notificación predeterminada, puedes agregar botones 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: Notificación con botones de acción

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

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

El proceso para agregar botones de acción se explica más adelante en Cómo crear una notificación.

Notificación expandible

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

Figura 9: Notificación expandible para textos de gran tamaño

También puedes crear una notificación expandible con una imagen, con un estilo de bandeja de entrada, como 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.

Y, aunque te recomendamos que utilices siempre estas plantillas para garantizar una compatibilidad de diseño adecuada en todos los dispositivos, si es necesario, también puedes crear un diseño de notificación personalizado.

Grupos y actualizaciones de notificaciones

Para evitar saturar a los usuarios con notificaciones múltiples o redundantes cuando haya actualizaciones adicionales, procura actualizar una notificación existente en lugar de emitir una nueva, o bien usar la notificación con estilo de bandeja de entrada para mostrar las actualizaciones de la conversación.

Sin embargo, si es necesario enviar varias notificaciones, deberías considerar la posibilidad de agrupar esas notificaciones de forma independiente en un grupo (disponible en Android 7.0 y versiones posteriores). Un grupo de notificaciones te permite ocultar varias notificaciones en una sola publicación del panel lateral, junto con un resumen. Luego, el usuario puede desglosar la notificación para revelar los detalles de cada elemento individual.

El usuario puede expandir de forma progresiva el grupo de notificaciones y cada una de ellas para obtener más detalles.

Figura 10: Grupo de notificación contraído y expandido

Para obtener información acerca de cómo agregar notificaciones a un grupo, consulta Cómo crear un grupo de notificaciones.

Canales de notificaciones

A partir de Android 8.0 (API nivel 26), todas las notificaciones deben asignarse a un canal o, de lo contrario, no aparecerán. Al categorizar las notificaciones en canales, los usuarios pueden desactivar canales de notificaciones específicos de tu app (en lugar de desactivar todas las notificaciones), así como controlar opciones visuales y auditivas para cada canal, todo desde la configuración del sistema Android (figura 11). Los usuarios también pueden presionar durante mucho tiempo una notificación para cambiar los comportamientos del canal asociado.

En los dispositivos que ejecutan Android 7.1 (API nivel 25) y versiones anteriores, los usuarios pueden administrar las notificaciones solo por app (en realidad, cada app solo tiene 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 varios canales de notificaciones (uno separado 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 de tu app. Por ejemplo, en una app de mensajería, puedes configurar canales de notificaciones separados para cada grupo de conversaciones que cree un usuario.

El canal es también donde especificas el nivel de importancia de tus notificaciones en Android 8.0 y versiones posteriores. Por lo tanto, todas las notificaciones del mismo canal tienen el mismo comportamiento.

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

Importancia de las notificaciones

Android utiliza la importancia de una notificación para determinar hasta qué punto puede interrumpir al usuario (de manera visual y audible). Cuanto mayor sea la importancia de una notificación, mayor será la interrupción.

En Android 8.0 (API nivel 26) y versiones posteriores, se determina la importancia de una notificación según el objeto importance del canal al que se envió la notificación. Los usuarios pueden cambiar la importancia de un canal de notificaciones en la configuración del sistema (figura 12). En Android 7.1 (API nivel 25) y versiones anteriores, se determina la importancia de cada notificación según el objeto priority de la notificación.

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

Los posibles niveles de importancia son los siguientes:

  • Urgente: Emite un sonido y aparece como una notificación emergente.
  • Alta: Emite un sonido.
  • Media: No se emite ningún sonido.
  • Baja: No se emite ningún sonido y no aparece en la barra de estado.

Todas las notificaciones, independientemente de su importancia, aparecen sin interrupciones en ubicaciones de la IU del sistema, como en el panel lateral de notificaciones y como una insignia en el ícono de selector (aunque puedes modificar la apariencia de la insignia de notificación).

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

Modo No interrumpir

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

Hay tres niveles diferentes disponibles en el modo No interrumpir:

  • Silencio total: Bloquea todos los sonidos y vibraciones, lo que incluye 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 los mensajes y llamadas, los usuarios también pueden elegir filtrar en función de quién es el destinatario o emisor (figura 13).

Figura 13: Los usuarios pueden permitir notificaciones basadas en categorías de todo el sistema (izquierda) y en quién envió un mensaje o quién está llamando (derecha).

En Android 8.0 (API nivel 26) y versiones posteriores, los usuarios pueden además habilitar notificaciones mediante categorías específicas de la app (también conocidas como canales) anulando No interrumpir en cada canal. Por ejemplo, una app de pagos puede tener canales para notificaciones relacionadas con retiros y depósitos. Entonces, el usuario puede elegir entre permitir las notificaciones de retiros, las de depósitos o ambas cuando se encuentre en el modo de prioridad. En los dispositivos que ejecutan Android 7.1 (API nivel 25) y versiones anteriores, los usuarios pueden permitir notificaciones por app, en lugar de hacerlo por canal.

A fin de configurar correctamente tus notificaciones para esta configuración del usuario, debes establecer una categoría y un canal a nivel del sistema.

Notificaciones para servicios en primer plano

Se requiere una notificación cuando tu app ejecuta un "servicio en primer plano", es decir, cuando se ejecuta un objeto Service en segundo plano de forma duradera y perceptible para el usuario, como un reproductor multimedia. A diferencia de otras, no es posible descartar esta notificación. Para quitar la notificación, se debe detener o quitar el servicio del estado en "primer plano".

Para obtener más información, lee Cómo ejecutar un servicio en primer plano. Y, si quieres compilar un reproductor multimedia, lee también Cómo usar notificaciones de MediaStyle con un servicio en primer plano.

Límites de publicación

A partir de Android 8.1 (API nivel 27), las apps no pueden emitir un sonido de notificación más de una vez por segundo. Si tu app publica varias notificaciones en un segundo, todas aparecerán de la forma esperada, pero solo la primera notificación por segundo emitirá un sonido.

Sin embargo, Android también aplica un límite de velocidad cuando actualiza una notificación. Si publicas actualizaciones en una sola notificación con demasiada frecuencia (muchas en menos de un segundo), es posible que el sistema no muestre algunas actualizaciones.

Compatibilidad de las notificaciones

Desde Android 1.0, la IU del sistema de notificaciones y las API relacionadas han evolucionado de forma constante. Para utilizar las funciones más recientes de la API de notificaciones y, al mismo tiempo, admitir dispositivos más antiguos, utiliza la API de notificaciones de la biblioteca de compatibilidad: NotificationCompat y sus subclases, así como NotificationManagerCompat. Esto te permitirá evitar escribir código condicional para comprobar los niveles de la API, ya que ellas se encargarán de ello por ti.

NotificationCompat se actualiza a medida que evoluciona la plataforma para incluir los métodos más recientes. Es importante tener en cuenta que la disponibilidad de un método de NotificationCompat no garantiza que se proporcione la función correspondiente en dispositivos más antiguos. En algunos casos, llamar a una API nueva genera que no funcione con dispositivos más antiguos. Por ejemplo, NotificationCompat.addAction() muestra el botón de acción en un dispositivo que ejecuta Android 4.1 (API nivel 16) y versiones posteriores únicamente.

A continuación, se incluye un resumen de los cambios de comportamiento más notables con respecto a las notificaciones de Android.

Android 4.1 (API nivel 16)

  • Se introdujeron plantillas de notificación expandibles (denominadas estilos de notificación), que permiten ampliar el área de contenido de la notificación para mostrar información. Los usuarios pueden utilizar un gesto para deslizar con un solo dedo hacia arriba o hacia abajo a fin de ampliar una notificación.
  • También se introdujo la posibilidad de agregar acciones adicionales en forma de botones.
  • Se agregó la posibilidad de que los usuarios desactiven las notificaciones por app en la configuración.

Android 4.4 (API niveles 19 y 20)

  • Se agregaron a la API los servicios del receptor de notificaciones.
  • Se agregó compatibilidad para Android Wear (ahora llamado Wear OS) en la API nivel 20.

Android 5.0 (API nivel 21)

  • Se introdujeron la pantalla bloqueada y las notificaciones emergentes.
  • El usuario ahora puede poner el teléfono en el modo No interrumpir y configurar qué notificaciones pueden interrumpirlo cuando el dispositivo esté en modo de solo prioridad.
  • Los métodos agregados a la API establecen si se muestra o no una notificación en la pantalla bloqueada (setVisibility()) y especifican la versión "pública" del texto de la notificación.
  • Se agregó el métodosetPriority(), que indica al sistema el nivel de "interrupción" de esta notificación (p. ej., si se ajusta a un valor alto, la notificación aparecerá como emergente).
  • Se agregó compatibilidad para las pilas de notificaciones en dispositivos Android Wear (ahora llamado Wear OS). Agrupa notificaciones en una pila utilizando setGroup(). Ten en cuenta que las pilas de notificaciones aún no son compatibles con las tablets ni con los teléfonos. Más adelante, se conocerán como grupo o conjunto.

Android 7.0 (API nivel 24)

  • Se rediseñaron las plantillas de notificaciones para destacar el avatar y la imagen hero.
  • Se agregaron tres plantillas de notificaciones: una para apps de mensajería y las otras dos para decorar vistas de contenido personalizadas con asequibilidad expandible y otras decoraciones del sistema.
  • Se agregó compatibilidad con dispositivos portátiles (teléfonos y tablets) para grupos de notificaciones. Utiliza la misma API que las pilas de notificaciones de Android Wear (ahora llamado Wear OS) introducidas en Android 5.0 (API nivel 21).
  • Los usuarios pueden responder directamente dentro de una notificación (pueden ingresar texto que luego se enviará a la app principal de la notificación) usando la respuesta intercalada.

Android 8.0 (API nivel 26)

  • Ahora las notificaciones individuales deben colocarse en un canal específico.
  • Los usuarios ahora pueden desactivar las notificaciones por canal, en lugar de desactivar todas las de una app.
  • Las aplicaciones que tienen notificaciones activas muestran una "insignia" en la parte superior del ícono de tu app en la pantalla de inicio o del selector.
  • Los usuarios ahora pueden posponer una notificación desde el panel lateral. Puedes establecer un tiempo de espera automático para una notificación.
  • También puedes definir el color de fondo de la notificación.
  • Con respecto a los comportamientos de las notificaciones, se movieron algunas API de Notification a NotificationChannel. Por ejemplo, usa NotificationChannel.setImportance() en lugar de NotificationCompat.Builder.setPriority() para Android 8.0 y versiones posteriores.