Opzioni di collegamento per le notifiche

Per impostazione predefinita, il sistema condivide le notifiche di un'app per smartphone con tutti gli smartwatch accoppiati. Se crei un'app dell'orologio e la stessa app esiste anche su uno smartphone accoppiato, gli utenti potrebbero ricevere notifiche duplicate: una generata e condivisa dall'app per smartphone e una generata dall'app dell'orologio. Wear OS include funzionalità per controllare come e quando le notifiche vengono condivise.

Evitare notifiche duplicate

Quando crei notifiche da una fonte esterna, ad esempio da Firebase Cloud Messaging, l'app per smartphone e l'app dell'orologio possono visualizzare ciascuna le proprie notifiche sullo smartwatch. Per evitare la duplicazione, disattiva la condivisione a livello di programmazione nell'app dell'orologio.

Utilizzare i tag di condivisione

Per condividere alcune delle notifiche create dall'app per smartphone con l'app dell'orologio quando l'app dell'orologio è installata, imposta i tag di condivisione.

Imposta un tag di condivisione su una notifica utilizzando il setBridgeTag(String) metodo, come mostrato nel seguente esempio di codice:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setBridgeTag("tagOne")
    )
    .build()

Disabilitare il bridging

Puoi disabilitare la condivisione per alcune o per tutte le notifiche. Ti consigliamo di disabilitare la condivisione in modo selettivo.

Disattivare la condivisione solo per alcune notifiche

Puoi disattivare dinamicamente la condivisione e, facoltativamente, consentire il passaggio di alcune notifiche in base al loro tag. Ad esempio, per disattivare la condivisione per tutte le notifiche tranne quelle con i tag tagOne, tagTwo o tagThree, utilizza l'BridgingConfig oggetto come mostrato nell'esempio seguente:

// In this example, bridging is only enabled for tagOne, tagTwo and tagThree.
BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, isBridgingEnabled = false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

Disattivare la condivisione per tutte le notifiche (opzione sconsigliata)

Per impedire la condivisione di tutte le notifiche da un'app per smartphone, utilizza la <meta-data> voce nel file manifest dell'app dell'orologio, come mostrato nell' esempio seguente:

<!-- Beware, this can have unintended consequences before the user is signed-in -->
<meta-data
    android:name="com.google.android.wearable.notificationBridgeMode"
    android:value="NO_BRIDGING" />

Impostare un ID di ignoramento per sincronizzare notifiche simili

Quando impedisci la condivisione con la funzionalità della modalità di condivisione, gli ignoramenti delle notifiche non vengono sincronizzati tra i dispositivi di un utente.

Tuttavia, se vengono create notifiche simili sia sullo smartphone sia sullo smartwatch, vuoi che entrambe le notifiche vengano ignorate quando l'utente ne ignora una.

In the NotificationCompat.WearableExtender, puoi impostare un ID univoco globale in modo che, quando un utente ignora una notifica, vengano ignorate anche le altre notifiche con lo stesso ID sugli smartwatch accoppiati.

La classe NotificationCompat.WearableExtender ha metodi che ti consentono di utilizzare gli ID di ignoramento, come mostrato nell'esempio seguente:

Quando l'utente ignora la notifica, tutte le altre notifiche con lo stesso ID di ignoramento vengono ignorate sullo smartwatch e sullo smartphone. Per recuperare un ID di ignoramento, utilizza getDismissalId().

Nell'esempio seguente, viene specificato un ID univoco globale per una nuova notifica, in modo che gli ignoramenti vengano sincronizzati:

val notification = NotificationCompat.Builder(context, channelId)
    // ... set other fields ...
    .extend(
        NotificationCompat.WearableExtender()
            .setDismissalId("abc123")
    )
    .build()

Notifiche solo locali

Per evitare notifiche duplicate, puoi anche utilizzare setLocalOnly() per rendere le notifiche locali allo smartphone.

Tuttavia, utilizza questo metodo solo se la notifica deve essere visualizzata solo sul dispositivo che l'ha creata. Sono inclusi non solo i dispositivi Wear OS, ma anche altri dispositivi indossabili e qualsiasi altro dispositivo connesso. Una notifica solo locale non viene condivisa, anche se l'app non è installata sullo smartwatch.

Quando crei un'app per Wear OS e un'app per smartphone che creano entrambe notifiche, non utilizzare questo approccio per evitare notifiche duplicate. Utilizza invece le opzioni di condivisione.

Ad esempio, utilizza una notifica solo locale quando un utente scarica un file su uno smartphone e la notifica indica che il download è stato completato.

Quando le notifiche non vengono condivise

Il sistema non condivide i seguenti tipi di notifiche:

Considerazioni sull'implementazione per le notifiche condivise

L'invio o la rimozione di notifiche condivise da un dispositivo indossabile richiede tempo. Quando progetti le notifiche, evita comportamenti imprevisti causati da questa latenza. Le seguenti linee guida ti aiutano a garantire che le notifiche condivise funzionino con le notifiche asincrone:

  • Se annulli una notifica sullo smartphone, potrebbe essere necessario del tempo per annullare la notifica corrispondente sullo smartwatch. Durante questo periodo, l'utente potrebbe inviare uno degli intent in attesa su quella notifica. Per questo motivo, continua a ricevere intent in attesa nella tua app dalle notifiche che ha annullato: quando annulli le notifiche, mantieni validi i ricevitori di intent in attesa di queste notifiche.
  • Non annullare e riattivare contemporaneamente un intero stack di notifiche. Modifica o rimuovi solo le notifiche che sono state effettivamente modificate. In questo modo si evita la latenza durante l'aggiornamento del dispositivo indossabile e si riduce l'impatto dell'app sulla durata della batteria.

Considerazioni sulla progettazione

Le notifiche di Wear OS hanno linee guida di progettazione specifiche. Per ulteriori informazioni, consulta le linee guida di progettazione di Wear OS.