Per impostazione predefinita, le notifiche vengono collegate, o condivise, da un'app su uno smartphone a qualsiasi smartwatch accoppiato. Se crei un'app dell'orologio e la tua app esiste anche su uno smartphone accoppiato, gli utenti potrebbero ricevere Notifiche: una generata e collegata dall'app Telefono e una generata dall'app Telefono dall'app dell'orologio. Wear OS include funzionalità per controllare come e quando le notifiche vengono connesse.
Evita le notifiche duplicate
Quando crei notifiche da una fonte esterna, ad esempio da Firebase Cloud Messaging, sia l'app mobile che l'app indossabile possono mostrare le proprie notifiche sullo smartwatch. Da evitare questo tipo di duplicazione, disattiva in modo programmatico il bridging nell'app indossabile.
Utilizzare i tag bridge
Se desideri collegare allo smartwatch alcune notifiche create sulla tua app mobile quando è installata l'app indossabile, imposta i tag bridge.
Imposta un tag bridge su una notifica utilizzando il metodo
setBridgeTag(String)
come mostrato nel seguente esempio di codice:
val notification = NotificationCompat.Builder(context, channelId) // ... set other fields ... .extend( NotificationCompat.WearableExtender() .setBridgeTag("tagOne") ) .build()
Disattiva bridging
Puoi disattivare la connessione per alcune notifiche o per tutte le notifiche. Ti consigliamo di disattivare selettivamente il bridging.
Disattiva il bridging per alcune notifiche
Puoi disattivare dinamicamente i ponti e, facoltativamente, consentire alcune notifiche
sulla base del loro tag. Ad esempio, per disattivare il bridging per tutte le notifiche ad eccezione di quelle codificate come
tagOne
, tagTwo
o tagThree
, utilizza i
BridgingConfig
come mostrato nell'esempio seguente:
BridgingManager.fromContext(context).setConfig( BridgingConfig.Builder(context, false) .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree")) .build() )
Disattiva il bridging per tutte le notifiche (sconsigliato)
Nota:non è consigliabile disattivare la connessione per tutte le notifiche perché La configurazione di bridging impostata nel file manifest viene applicata all'installazione di un'app dell'orologio. Ciò può comportare la perdita delle notifiche se l'utente deve aprire e configurare l'app dell'orologio prima di ricevere le notifiche.
Per evitare il collegamento di tutte le notifiche di un
per smartphone, usa la voce <meta-data>
nel file manifest dell'app dell'orologio, come mostrato nell'esempio seguente:
<application> ... <!-- Beware, this can have unintended consqequences before the user is signed-in --> <meta-data android:name="com.google.android.wearable.notificationBridgeMode" android:value="NO_BRIDGING" /> ... </application>
Nota: la specifica di una configurazione di collegamento in fase di runtime comporta l'override di una configurazione di bridging nel file manifest di Android.
Imposta un ID chiusura per sincronizzare notifiche simili
Quando impedisci il collegamento con la funzionalità di modalità ponte, le notifiche non vengono ignorate sincronizzati tra i dispositivi di un utente.
Tuttavia, se vengono create notifiche simili sia sul dispositivo mobile che sull'orologio, notifiche da ignorare quando l'utente ignora uno di questi.
Nella
NotificationCompat.WearableExtender
,
puoi impostare un ID univoco globale in modo che, quando una notifica viene ignorata, altre notifiche
con lo stesso ID sugli smartwatch accoppiati.
La
NotificationCompat.WearableExtender
include metodi che ti consentono di utilizzare ID di chiusura, come mostrato nell'esempio seguente:
fun setDismissalId(dismissalId: String): WearableExtender fun getDismissalId(): String
Per sincronizzare un rifiuto, utilizza il
setDismissalId()
. Per ogni notifica, passa un ID univoco globale sotto forma di stringa quando chiami il metodo
setDismissalId()
.
Quando la notifica viene ignorata, tutte le altre notifiche con lo stesso ID chiusura vengono
Ignorate sullo smartwatch e sullo smartphone. Per recuperare un ID chiusura, utilizza
getDismissalId()
Nell'esempio seguente, un ID univoco globale è specificato per una nuova notifica, quindi le chiusure sono sincronizzate:
val notification = NotificationCompat.Builder(context, channelId) // Set other fields ... .extend( NotificationCompat.WearableExtender() .setDismissalId("abc123") ) .build()
Nota: gli ID Ignora funzionano solo se l'orologio è accoppiato a uno smartphone Android, ma non se è accoppiato a un iPhone.
Quando le notifiche non vengono connesse
I seguenti tipi di notifiche non vengono collegati:
- Notifiche solo locali impostate utilizzando
Notification.Builder.setLocalOnly(boolean)
. - Notifiche in corso impostate con
Notification.Builder.setOngoing(boolean)
oNotification.FLAG_ONGOING_EVENT
. - Notifiche non cancellabili impostate con
Notification.FLAG_NO_CLEAR
. - Notifiche in cui l'app indossabile corrispondente ha disattivato il bridging delle notifiche, come descritto in precedenza.
Best practice per le notifiche collegate
Spingere o rimuovere le notifiche in modalità bridge da un dispositivo indossabile potrebbe richiedere del tempo dispositivo. Mentre progetti le notifiche, assicurati di evitare imprevisti comportamento causato da questa latenza. Le seguenti linee guida aiutano assicurati che le notifiche collegate funzionino con quelle asincrone:
- Se annulli una notifica sullo smartphone, l'annullamento potrebbe richiedere del tempo la notifica corrispondente sullo smartwatch. Durante questo periodo, l'utente potrebbe inviare uno degli intent in attesa presenti nella notifica. Per questo continua a ricevere intent in attesa nella tua app dalle notifiche annullate: quando annulli le notifiche, mantieni i destinatari di intent in attesa valida.
- Non annullare e riattivare un'intera serie di notifiche contemporaneamente. Modifica o rimuovi solo le notifiche che sono state effettivamente modificate. In questo modo si evita la latenza di aggiornamento del dispositivo indossabile e si riducono dell'app sulla durata della batteria.
Considerazioni sulla progettazione
Le notifiche di Wear OS hanno le proprie linee guida relative al design. Per ulteriori informazioni, consulta le linee guida per la progettazione per Wear OS.