Überbrückungsoptionen für Benachrichtigungen

Standardmäßig werden Benachrichtigungen überbrückt bzw. von einer App auf einem Smartphone an alle gekoppelten Smartwatches gesendet. Wenn Wenn du eine Smartwatch-App entwickelst und deine App auch auf einem gekoppelten Smartphone vorhanden ist, erhalten Nutzer möglicherweise doppelte Benachrichtigungen: eine wurde von der Telefon-App generiert und überbrückt, die andere wurde über die Smartwatch-App. Wear OS bietet Funktionen, mit denen du festlegen kannst, wie und wann Benachrichtigungen überbrückt.

Doppelte Benachrichtigungen vermeiden

Wenn Sie Benachrichtigungen aus einer externen Quelle erstellen, z. B. von Firebase Cloud Messaging, mobile App und Ihre Wearable-App können jeweils ihre eigenen Benachrichtigungen auf der Uhr anzeigen. Um dies zu vermeiden sollten Sie das Bridging in Ihrer Wearable-App programmatisch deaktivieren.

Bridge-Tags verwenden

Wenn du einige der in deiner mobilen App erstellten Benachrichtigungen mit der Uhr verbinden möchtest Legen Sie Bridge-Tags fest, wenn Ihre Wearable-App installiert ist.

Legen Sie mithilfe des setBridgeTag(String) an, wie im folgenden Codebeispiel gezeigt:

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

Bridging deaktivieren

Sie können diese Funktion für einige oder alle Benachrichtigungen deaktivieren. Wir empfehlen, das Bridging selektiv zu deaktivieren.

Bridging für einige Benachrichtigungen deaktivieren

Sie können Bridging dynamisch deaktivieren und optional einige Benachrichtigungen zulassen basierend auf ihrem Tag durch. Um beispielsweise Bridging für alle Benachrichtigungen zu deaktivieren, mit Ausnahme derjenigen, die als Für tagOne, tagTwo oder tagThree verwenden Sie die Methode BridgingConfig wie im folgenden Beispiel gezeigt:

BridgingManager.fromContext(context).setConfig(
    BridgingConfig.Builder(context, false)
        .addExcludedTags(listOf("tagOne", "tagTwo", "tagThree"))
        .build()
)

Bridging für alle Benachrichtigungen deaktivieren (nicht empfohlen)

Hinweis:Es wird nicht empfohlen, das Bridging für alle Benachrichtigungen zu deaktivieren, da Die im Manifest festgelegte Bridging-Konfiguration wird wirksam, sobald eine Smartwatch-App installiert wird. Dies kann dazu führen, dass Benachrichtigungen verloren gehen, wenn der Nutzer die Smartwatch-App öffnen und einrichten muss. bevor Sie Benachrichtigungen erhalten.

Um zu verhindern, dass alle Benachrichtigungen einer bestimmten Smartphone-App den Eintrag <meta-data> in der Manifestdatei der Smartwatch-App verwenden, wie im folgenden Beispiel gezeigt:

<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>

Hinweis:Wenn Sie während der Laufzeit eine Bridging-Konfiguration angeben, wird eine bridging-bezogene Konfiguration überschrieben. in der Android-Manifestdatei.

Ablehnungs-ID festlegen, um ähnliche Benachrichtigungen zu synchronisieren

Wenn Sie die Überbrückung mit dem Bridging-Modus verhindern, werden Benachrichtigungen die auf den Geräten eines Nutzers synchronisiert werden.

Wenn jedoch sowohl auf dem Mobilgerät als auch auf der Uhr ähnliche Benachrichtigungen erstellt werden, möchten Sie beide Benachrichtigungen, die geschlossen werden, wenn der Nutzer eine davon schließt.

Im NotificationCompat.WearableExtender, können Sie eine global eindeutige ID festlegen, damit beim Schließen einer Benachrichtigung andere Benachrichtigungen mit der gleichen ID auf gekoppelten Smartwatches werden ebenfalls geschlossen.

Die NotificationCompat.WearableExtender -Klasse verfügt über Methoden, mit denen Sie Ablehnungs-IDs verwenden können, wie im folgenden Beispiel gezeigt:

fun setDismissalId(dismissalId: String): WearableExtender
fun getDismissalId(): String

Wenn Sie eine Ablehnung synchronisieren möchten, verwenden Sie das setDismissalId() . Übergeben Sie für jede Benachrichtigung eine global eindeutige ID als String, wenn Sie die Methode setDismissalId()-Methode.

Wird die Benachrichtigung geschlossen, werden alle anderen Benachrichtigungen mit derselben ID geschlossen. auf der Smartwatch und auf dem Smartphone geschlossen. Um eine Ablehnungs-ID abzurufen, verwenden Sie getDismissalId()

Im folgenden Beispiel ist eine global eindeutige ID für eine neue Benachrichtigung angegeben, sodass Ablehnungen synchronisiert werden:

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

Hinweis:Das Schließen von IDs funktioniert nur, wenn eine Smartwatch mit einem Android-Smartphone gekoppelt ist. mit einem iPhone gekoppelt ist.

Wenn Benachrichtigungen nicht überbrückt werden

Die folgenden Benachrichtigungstypen werden nicht überbrückt:

Best Practices für überbrückte Benachrichtigungen

Es dauert einige Zeit, bis überbrückte Benachrichtigungen auf einem Wearable gesendet oder entfernt werden . Achten Sie bei der Gestaltung Ihrer Benachrichtigungen darauf, unerwartete auf das durch diese Latenz verursachte Verhalten. Die folgenden Richtlinien helfen Achten Sie darauf, dass die überbrückten Benachrichtigungen mit asynchronen Benachrichtigungen funktionieren:

  • Wenn Sie eine Benachrichtigung auf dem Smartphone abbrechen, kann es einige Zeit dauern, bis sie deaktiviert wird auf die entsprechende Benachrichtigung auf der Uhr. Während dieser Zeit sendet der Nutzer einen der ausstehenden Intents. In diesem Fall erhalten Sie in Ihrer App weiterhin ausstehende Intents für abgebrochene Benachrichtigungen: Beim Abbrechen von Benachrichtigungen die ausstehenden Intent-Empfänger beibehalten gültig sein.
  • Brechen Sie nicht den gesamten Benachrichtigungsstapel auf einmal ab und lösen Sie ihn nicht noch einmal aus. Ändern oder entfernen Sie nur die Benachrichtigungen, die tatsächlich geändert wurden. Dadurch wird die Latenz beim Aktualisieren des Wearables vermieden und wie sich die App auf die Akkulaufzeit auswirkt.

Designüberlegungen

Wear OS-Benachrichtigungen haben eigene Designrichtlinien. Weitere Informationen lesen Sie die Designrichtlinien für Wear OS.