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:
- Un'app mobile crea una notifica e il sistema la trasferisce automaticamente allo smartwatch.
- 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.
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:
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:
- Crea un nuovo
Activityche estendeConfirmationActivity. - Usa
RemoteActivityHelpernel nuovoActivityper avviare l'app Telefono. - Quando crei l'intent
Intentper avviare l'Activitydalla notifica, imposta l'extraEXTRA_ANIMATION_TYPEsuOPEN_ON_PHONE_ANIMATION.
Nota:non puoi utilizzare un BroadcastReceiver come target
dell'azione di notifica.