Überbrückungsoptionen für Benachrichtigungen

Standardmäßig werden Benachrichtigungen von einer App auf einem Smartphone an eine gekoppelte Smartwatch überbrückt bzw. geteilt. Wenn du eine Smartwatch-App erstellst und deine App auch auf einem gekoppelten Smartphone vorhanden ist, erhalten Nutzer möglicherweise doppelte Benachrichtigungen – eine, die von der Smartphone-App generiert und überbrückt wird, und eine, die von der Smartwatch-App generiert wird. Wear OS bietet Funktionen, mit denen sich steuern lässt, wie und wann Benachrichtigungen überbrückt werden.

Doppelte Benachrichtigungen vermeiden

Wenn Sie Benachrichtigungen von einer externen Quelle wie Firebase Cloud Messaging erstellen, können Ihre mobile App und Ihre Wearable-App jeweils ihre eigenen Benachrichtigungen auf der Smartwatch anzeigen. Um diese Art von Duplikation zu vermeiden, kannst du die Bridging-Funktion in deiner Wearable-App programmatisch deaktivieren.

Bridge-Tags verwenden

Wenn du einige der Benachrichtigungen, die in deiner mobilen App erstellt wurden, bei der Installation deiner Wearable-App mit der Smartwatch verbinden möchtest, kannst du Bridge-Tags einrichten.

Mit der Methode setBridgeTag(String) können Sie ein Bridge-Tag für eine Benachrichtigung festlegen, 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 die Bridging-Funktion für einige oder für alle Benachrichtigungen deaktivieren. Wir empfehlen, das Bridging selektiv zu deaktivieren.

Bridging für einige Benachrichtigungen deaktivieren

Du kannst Bridging dynamisch deaktivieren und optional einige Benachrichtigungen basierend auf ihrem Tag zulassen. Wenn du beispielsweise das Bridging für alle Benachrichtigungen mit Ausnahme der mit tagOne, tagTwo oder tagThree getaggten Benachrichtigungen deaktivieren möchtest, verwende das Objekt BridgingConfig wie im folgenden Beispiel:

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

Bridging für alle Benachrichtigungen deaktivieren (nicht empfohlen)

Hinweis: Das Deaktivieren der Bridging-Konfiguration für alle Benachrichtigungen wird nicht empfohlen, da die im Manifest festgelegte Bridging-Konfiguration wirksam wird, sobald eine Uhr-App installiert wird. Dies kann dazu führen, dass Benachrichtigungen verloren gehen, wenn der Nutzer die Uhren-App öffnen und einrichten muss, bevor er Benachrichtigungen erhalten kann.

Wenn du verhindern möchtest, dass alle Benachrichtigungen von einer Smartphone-App überbrückt werden, verwende den Eintrag <meta-data> in der Manifestdatei der Smartwatch-App, 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 zur Laufzeit eine Bridging-Konfiguration angeben, wird eine Bridging-bezogene Einstellung in der Android-Manifestdatei überschrieben.

Ablehnungs-ID festlegen, um ähnliche Benachrichtigungen zu synchronisieren

Wenn du das Bridging mit der Funktion „Bridging-Modus“ verhinderst, werden Benachrichtigungen nicht mit den Geräten der Nutzer synchronisiert.

Werden jedoch sowohl auf dem Mobilgerät als auch auf der Uhr ähnliche Benachrichtigungen erstellt, sollen beide Benachrichtigungen geschlossen werden, wenn der Nutzer eine davon schließt.

In der NotificationCompat.WearableExtender kannst du eine global eindeutige ID festlegen. Wenn eine Benachrichtigung geschlossen wird, werden auch andere Benachrichtigungen mit derselben ID auf gekoppelten Smartwatches geschlossen.

Die Klasse NotificationCompat.WearableExtender hat Methoden, mit denen du Ablehnungs-IDs verwenden kannst, wie im folgenden Beispiel gezeigt:

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

Verwenden Sie die Methode setDismissalId(), um eine Ablehnung zu synchronisieren. Übergeben Sie für jede Benachrichtigung eine global eindeutige ID als String, wenn Sie die Methode setDismissalId() aufrufen.

Wenn die Benachrichtigung geschlossen wird, werden alle anderen Benachrichtigungen mit derselben ID auf der Smartwatch und auf dem Smartphone geschlossen. Verwende getDismissalId(), um eine Ablehnungs-ID abzurufen

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

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

Hinweis:Ablehnungs-IDs funktionieren, wenn eine Smartwatch mit einem Android-Smartphone gekoppelt ist, nicht jedoch, wenn eine Smartwatch 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 von einem Wearable-Gerät gesendet oder entfernt werden. Achten Sie beim Entwerfen Ihrer Benachrichtigungen darauf, unerwartetes Verhalten zu vermeiden, das durch diese Latenz verursacht wird. Die folgenden Richtlinien sorgen dafür, dass Ihre überbrückten Benachrichtigungen mit asynchronen Benachrichtigungen funktionieren:

  • Wenn du eine Benachrichtigung auf dem Smartphone abbrichst, kann es einige Zeit dauern, bis die entsprechende Benachrichtigung auf der Uhr abgebrochen wird. Während dieser Zeit kann der Nutzer einen der ausstehenden Intents für diese Benachrichtigung senden. Aus diesem Grund kannst du weiterhin ausstehende Intents in deiner App über gekündigte Benachrichtigungen erhalten: Wenn du Benachrichtigungen abbrichst, solltest du die ausstehenden Intent-Empfänger dieser Benachrichtigungen gültig lassen.
  • Sie sollten nicht einen ganzen Stapel von Benachrichtigungen auf einmal abbrechen und neu auslösen. Ändern oder entfernen Sie nur die Benachrichtigungen, die tatsächlich geändert wurden. So vermeidest du die Latenz beim Aktualisieren des Wearable-Geräts und die Auswirkungen deiner App auf die Akkulaufzeit.

Überlegungen zum Design

Für Wear OS-Benachrichtigungen gelten eigene Designrichtlinien. Weitere Informationen findest du in den Designrichtlinien für Wear OS.