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, los desarrolladores usan 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.

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: Las notificaciones que usan RemoteViews no contienen diseños personalizados, y el wearable solo muestra el texto y los íconos. Sin embargo, puedes crear notificaciones personalizadas que usen diseños de tarjetas personalizados que funcionen bien en el reloj.

Notificaciones recomendadas para wearables

Recomendamos usar 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 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 con 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, habilita 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 las notificaciones duplicadas

De forma predeterminada, las notificaciones se comparten desde la app para el teléfono vinculado a cualquier reloj sincronizado. Esta es una gran opción si no tienes instalada una app para wearables.

Sin embargo, si compilas una app independiente de reloj y tienes una app en el teléfono vinculado, estas crearán notificaciones duplicadas.

Wear OS proporciona una forma de detener las notificaciones duplicadas con las APIs de Bridging. Para obtener más información, consulta Modo puente para notificaciones en Wear.

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

Si alguna vez 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 la clase 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 lección.
  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 NotificationManager, algunas funciones de NotificationCompat.WearableExtender no funcionan, así que asegúrate de usar NotificationCompat.

Puedes sincronizar los descartes (las cancelaciones) de notificaciones en los dispositivos del usuario. Para sincronizar un método de cancelación setDismissalId(). Para cada notificación, pasa un ID único general, como una string, cuando llames al método setDismissalId(). Cuando se cancela la notificación, las demás notificaciones con el mismo ID de cancelación también se cancelan en los relojes 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 y no aparecen en el teléfono.