As notificações em smartwatches usam as mesmas APIs e têm a mesma estrutura das notificações em smartphones.
As notificações podem aparecer em um smartwatch de duas maneiras:
- O app para dispositivos móveis cria uma notificação e o sistema conecta automaticamente essa notificação ao smartwatch.
- Um app para wearables cria uma notificação.
Em ambos os cenários, os desenvolvedores usam a classe
NotificationCompat.Builder
para criar notificações. Ao criar notificações com a classe builder, o sistema
se encarrega de mostrar as notificações corretamente. Por exemplo, quando você emite uma notificação do
seu app para dispositivos móveis, cada notificação é mostrada como um card no fluxo de notificações.
O exemplo abaixo mostra como as notificações aparecem.
Figura 1. A mesma notificação mostrada no smartphone e no smartwatch.
Use uma das subclasses
NotificationCompat.Style
para ter os melhores resultados.
Observação:
Usar RemoteViews
remove as notificações de layouts personalizados e o wearable só mostra o texto e os ícones.
Observação:as notificações de intent de tela cheia (setFullScreenIntent())
e a permissão USE_FULL_SCREEN_INTENT
não são compatíveis com o Wear OS.
Notificações recomendadas para wearables
Use as notificações que podem ser abertas como ponto de partida para todas as notificações, porque elas são uma ótima maneira de manter os usuários de wearables engajados. O estado recolhido aparece na bandeja de notificações para proporcionar uma experiência simples e fácil de entender. Se o usuário tocar nela, a notificação é aberta, revelando uma experiência imersiva e rolável de conteúdo e outras ações.
É possível Criar uma notificação que pode ser aberta
da mesma forma que em um dispositivo móvel com qualquer uma das NotificationCompat.Style
subclasses. Por exemplo, uma notificação padrão usando
NotificationCompat.MessagingStyle
tem esta aparência:
Figura 2. Exemplo de uma notificação MessagingStyle no Wear OS.
Você pode perceber que a notificação tem várias Ações empilhadas na parte de baixo do estado aberto.
Dica: caso suas notificações incluam uma ação "Responder" (como para um app de mensagens
), é possível melhorar o comportamento da notificação. Por exemplo, você pode ativar respostas de entrada de texto
por voz diretamente do wearable ou de respostas de texto predefinidas com
setChoices().
Para mais informações, leia
Adicionar o botão de resposta.
Evitar notificações duplicadas
Por padrão, as notificações são transmitidas de um aplicativo para smartphones associados para qualquer smartwatch pareado. Essa é uma ótima opção se você não tiver um app para wearables instalado.
No entanto, se você criar um app para smartwatch independente e um app para smartphone complementar, eles vão criar notificações duplicadas.
O Wear OS oferece uma maneira de interromper as notificações duplicadas com as APIs Bridging. Isso é particularmente importante para apps em dispositivos que executam o Wear OS 5 ou mais recente, porque algumas notificações que podem ser dispensadas em um dispositivo móvel não podem ser dispensadas no dispositivo Wear OS. Para mais informações, leia Opções de ponte para notificações.
Adicionar recursos específicos de wearable a uma notificação
Se você precisar adicionar recursos específicos do wearable a uma notificação, use a
NotificationCompat.WearableExtender classe para especificar as opções.
Para usar essa API, siga as etapas abaixo:
Observação:
Se você usar o NotificationManager do framework,
alguns recursos do
NotificationCompat.WearableExtender não vão funcionar. Use
NotificationCompat.
Este exemplo mostra como definir uma ação específica do Wear na notificação e também definir o
ID de dispensa. Quando a notificação é dispensada, todas as outras notificações com o mesmo
ID são dispensadas no relógio e no smartphone associado. Para acessar um ID de dispensa,
use
getDismissalId().
// This intent will be fired as a result of the user clicking the "Open on watch" action. // However, it executes on the phone, not on the watch. Typically, the Activity should then use // RemoteActivityHelper to then launch the correct activity on the watch. val intent = Intent(context, LaunchOnWearActivity::class.java) val wearPendingIntent = PendingIntent.getActivity( context, wearRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE ) val openOnWatchAction = NotificationCompat.Action.Builder( R.drawable.watch, "Open on watch", wearPendingIntent ) .build() val wearableExtender = NotificationCompat.WearableExtender() // This action will only be shown on the watch, not on the phone. // Actions added to the Notification builder directly will not be shown on the watch, // because one or more actions are defined in the WearableExtender. .addAction(openOnWatchAction) // This synchronizes dismissals between watch and phone. .setDismissalId(chatId) val notification = NotificationCompat.Builder(context, channelId) // ... set other fields ... .extend(wearableExtender) .build()
Iniciar o app para smartphone em um dispositivo wearable
Se você estiver usando notificações em ponte, qualquer notificação incluirá automaticamente um botão para iniciar o app no smartphone. No entanto, se você estiver usando uma notificação local, criada no relógio, use as seguintes etapas para criar um botão que inicia o app no smartphone:
- Crie um novo
Activityque estendaConfirmationActivity. - Use
RemoteActivityHelperna novaActivitypara iniciar o app para smartphone. - Ao criar o
Intentpara iniciar oActivityna notificação, defina o extraEXTRA_ANIMATION_TYPEcomoOPEN_ON_PHONE_ANIMATION.
Observação:não é possível usar um BroadcastReceiver como destino
da ação de notificação.