Opzioni di collegamento per le notifiche

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:

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.