Notificaciones en Wear OS

Las notificaciones en los relojes usan las mismas APIs y tienen la misma estructura que las notificaciones en los teléfonos.

Las notificaciones pueden aparecer en un reloj de dos maneras:

  1. Una app para dispositivos móviles crea una notificación y el sistema vincula automáticamente esa notificación con el reloj.
  2. Una app para wearables crea una notificación.

En ambos casos, usa la clase NotificationCompat.Builder para crear notificaciones. Cuando compilas notificaciones con la clase builder, el sistema se encarga de mostrarlas de forma correcta. Por ejemplo, cuando emites una notificación desde tu app para dispositivos móviles, cada notificación aparece como una tarjeta en el flujo de notificaciones.

Consulta el siguiente ejemplo para ver cómo se muestran las notificaciones. notification-cards

Figura 1: La misma notificación como aparece en un teléfono y en un reloj

Usa una de las subclases NotificationCompat.Style para obtener los mejores resultados

Nota: Con RemoteViews, se quitan las notificaciones de diseños personalizados, y el wearable solo muestra el texto y los íconos.

Notificaciones recomendadas para wearables

Usa las notificaciones expandibles como punto de partida para todas las notificaciones, ya que son una excelente manera de atraer a los usuarios de wearables. El estado contraído se muestra en la bandeja de notificaciones para ofrecer una experiencia breve y fácil de ver. Si el usuario presiona la notificación, esta se expande, y se muestra una experiencia envolvente de contenido y acciones adicionales que se pueden desplazar.

Puedes crear una notificación expandible de la misma manera que lo harías en dispositivos móviles, usando cualquiera de las subclases NotificationCompat.Style. Por ejemplo, una notificación estándar que usa NotificationCompat.MessagingStyle se ve de la siguiente manera: expandable-notification

Figura 2: Ejemplo de una notificación de MessagingStyle en Wear OS

Puedes ver que la notificación tiene varias acciones apiladas en la parte inferior del estado expandido.

Para ver ejemplos de NotificationCompat.BigPictureStyle, NotificationCompat.BigTextStyle, NotificationCompat.InboxStyle y NotificationCompat.MessagingStyle, consulta la muestra de notificación en GitHub.

Sugerencia: Si tus notificaciones incluyen una acción de "respuesta" (por ejemplo, para una app de mensajería), puedes mejorar su comportamiento. Por ejemplo, puedes habilitar las respuestas de entrada de voz directamente desde el wearable o las respuestas de texto predefinidas con setChoices(). Para obtener más información, consulta Cómo agregar el botón de respuesta.

Cómo evitar notificaciones duplicadas

De forma predeterminada, las notificaciones se comparten desde la aplicación complementaria para teléfonos a cualquier reloj vinculado. Esta es una opción muy útil si no tienes instalada una app para wearables.

Sin embargo, si compilas una app independiente para relojes y una aplicación complementaria para teléfonos, estas crean notificaciones duplicadas.

Wear OS proporciona una forma de detener las notificaciones duplicadas con las APIs de modo puente. Para obtener más información, consulta Cómo unir opciones para las notificaciones.

Cómo agregar funciones específicas de wearables a una notificación

Si necesitas agregar funciones específicas de wearables a una notificación, como ocultar un ícono de app de la notificación de wearables o permitir que los usuarios dicten una respuesta de texto con entrada de voz, puedes usar NotificationCompat.WearableExtender para especificar las opciones. Para usar esta API, haz lo siguiente:

  1. Crea una instancia de WearableExtender y configura las opciones específicas de wearables para la notificación.
  2. Crea una instancia de NotificationCompat.Builder y configura las propiedades deseadas para tu notificación como se describió anteriormente en esta guía.
  3. Llama a extend() en la notificación y pasa WearableExtender. Esto permite aplicar las opciones de wearables a la notificación.
  4. Llama a build() para compilar la notificación.

Nota: Si usas el framework de NotificationManager, algunas funciones de NotificationCompat.WearableExtender no funcionan, así que asegúrate de usar NotificationCompat.

Puedes sincronizar los descartes o las cancelaciones de notificaciones en los dispositivos del usuario. Para sincronizar un descarte, usa el método setDismissalId(). Para cada notificación, pasa un ID único general como una cadena cuando llames a setDismissalId(). Cuando se cancela la notificación, las demás notificaciones con el mismo ID de cancelación también se cancelan en el reloj y en el teléfono vinculado. Para recuperar un ID de cancelación, usa getDismissalId().

Cómo especificar acciones exclusivas de wearables

Si quieres que diferentes acciones estén disponibles en el reloj y el teléfono, usa WearableExtender.addAction(). Una vez que agregues una acción con este método, el wearable no mostrará ninguna otra acción agregada con NotificationCompat.Builder.addAction(). Las acciones que se agregan con WearableExtender.addAction() aparecen solo en el wearable, no en el teléfono.