Notifiche su Wear OS

Le notifiche sugli smartwatch utilizzano le stesse API e hanno la stessa struttura delle notifiche sugli smartphone.

Le notifiche possono essere visualizzate su uno smartwatch in due modi:

  1. Un'app mobile crea una notifica e il sistema la trasferisce automaticamente allo smartwatch.
  2. Un'app per indossabili crea una notifica.

Per entrambi gli scenari, utilizza la classe NotificationCompat.Builder per creare notifiche. Quando crei notifiche con la classe Builder, il sistema si occupa di visualizzarle correttamente. Ad esempio, quando invii una notifica dalla tua app mobile, ogni notifica viene visualizzata come scheda nel flusso di notifiche.

Esamina l'esempio seguente per vedere come vengono visualizzate le notifiche.

notification-cards

Figura 1. La stessa notifica visualizzata su uno smartphone e su uno smartwatch.

Utilizza una delle sottoclassi NotificationCompat.Style per ottenere risultati ottimali.

Nota:L'utilizzo di RemoteViews rimuove i layout personalizzati dalle notifiche e il dispositivo indossabile mostra solo il testo e le icone.

Notifiche consigliate per i dispositivi indossabili

Utilizza le notifiche espandibili come punto di partenza per tutte le notifiche, in quanto sono un ottimo modo per coinvolgere gli utenti di indossabili. Lo stato compresso viene visualizzato nella barra delle notifiche per un'esperienza breve e rapida. Se l'utente tocca la notifica, questa si espande, mostrando un'esperienza immersiva e scorrevole di contenuti e azioni aggiuntivi.

Puoi creare una notifica espandibile allo stesso modo in cui faresti su un dispositivo mobile, utilizzando una delle sottoclassi NotificationCompat.Style. Ad esempio, una notifica standard che utilizza NotificationCompat.MessagingStyle è simile alla seguente:

expandable-notification

Figura 2. Esempio di notifica MessagingStyle su Wear OS.

Puoi notare che la notifica ha più azioni impilate nella parte inferiore dello stato espanso.

Suggerimento:se le notifiche includono un'azione "Rispondi", ad esempio per un'app di messaggistica, puoi migliorare il comportamento della notifica. Ad esempio, puoi attivare le risposte con input vocale direttamente dal dispositivo indossabile o le risposte di testo predefinite con setChoices(). Per maggiori informazioni, leggi Aggiungere il pulsante Rispondi.

Evitare notifiche duplicate

Per impostazione predefinita, le notifiche vengono trasferite da un'app per smartphone complementare a tutti gli smartwatch accoppiati. Questa è un'ottima opzione se non hai installato un'app per indossabili.

Tuttavia, se crei un'app per orologio autonoma e un'app per smartphone complementare, le app creano notifiche duplicate.

Wear OS offre un modo per interrompere le notifiche duplicate con le API di bridging. Ciò è particolarmente importante per le app sui dispositivi che eseguono Wear OS 5 o versioni successive, perché alcune notifiche che possono essere chiuse su un dispositivo mobile non possono essere chiuse sul dispositivo Wear OS. Per saperne di più, leggi Opzioni di bridging per le notifiche.

Aggiungere funzionalità specifiche per i dispositivi indossabili a una notifica

Se devi aggiungere funzionalità specifiche per i wearable a una notifica, puoi utilizzare la classe NotificationCompat.WearableExtender per specificare le opzioni. Per utilizzare questa API:

Nota: Se utilizzi NotificationManager del framework, alcune funzionalità di NotificationCompat.WearableExtender non funzionano, quindi assicurati di utilizzare NotificationCompat.

Questo esempio mostra come impostare un'azione specifica per Wear sulla notifica e anche come impostare l' ID chiusura. Quando la notifica viene ignorata, tutte le altre notifiche con lo stesso ID di chiusura vengono ignorate sullo smartwatch e sullo smartphone associato. Per recuperare un ID licenziamento, utilizza 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()

Avviare l'app Telefono da un dispositivo indossabile

Se utilizzi le notifiche bridge, qualsiasi notifica include automaticamente un pulsante per avviare l'app sullo smartphone. Tuttavia, se utilizzi una notifica locale creata sullo smartwatch, segui i seguenti passaggi per creare un pulsante che avvii l'app sullo smartphone:

  1. Crea un nuovo Activity che estende ConfirmationActivity.
  2. Usa RemoteActivityHelper nel nuovo Activity per avviare l'app Telefono.
  3. Quando crei l'intent Intent per avviare l'Activity dalla notifica, imposta l'extra EXTRA_ANIMATION_TYPE su OPEN_ON_PHONE_ANIMATION.
Questo approccio guida l'utente a interagire sul proprio smartphone e segue i requisiti della piattaforma per l'avvio dei processi in background.

Nota:non puoi utilizzare un BroadcastReceiver come target dell'azione di notifica.