Überbrückungsoptionen für Benachrichtigungen

Standardmäßig leitet das System Benachrichtigungen von einer Smartphone-App an alle gekoppelten Smartwatches weiter oder gibt sie für diese frei. Wenn Sie eine Smartwatch-App entwickeln und Ihre App auch auf einem gekoppelten Smartphone vorhanden ist, erhalten Nutzer möglicherweise doppelte Benachrichtigungen: eine, die von der Smartphone-App generiert und weitergeleitet wird, und eine, die von der Smartwatch-App generiert wird. Wear OS bietet Funktionen, mit denen Sie steuern können, wie und wann Benachrichtigungen weitergeleitet werden.

Doppelte Benachrichtigungen vermeiden

Wenn Sie Benachrichtigungen aus einer externen Quelle erstellen, z. B. aus Firebase Cloud Messaging, können Ihre Smartphone-App und Ihre Smartwatch-App jeweils eigene Benachrichtigungen auf der Smartwatch anzeigen. Um doppelte Benachrichtigungen zu vermeiden, deaktivieren Sie die Weiterleitung programmatisch in Ihrer Smartwatch-App.

Weiterleitungstags verwenden

Wenn Sie einige der Benachrichtigungen, die von Ihrer Smartphone-App erstellt werden, an die Smartwatch weiterleiten möchten, wenn Ihre Smartwatch-App installiert ist, legen Sie Weiterleitungstags fest.

Legen Sie mit der setBridgeTag(String) Methode ein Weiterleitungstag für eine Benachrichtigung fest, wie im folgenden Codebeispiel gezeigt:

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

Weiterleitung deaktivieren

Sie können die Weiterleitung für einige oder alle Benachrichtigungen deaktivieren. Wir empfehlen, die Weiterleitung selektiv zu deaktivieren.

Weiterleitung nur für einige Benachrichtigungen deaktivieren

Sie können die Weiterleitung dynamisch deaktivieren und optional einige Benachrichtigungen basierend auf ihrem Tag zulassen. Wenn Sie beispielsweise die Weiterleitung für alle Benachrichtigungen deaktivieren möchten, mit Ausnahme der Benachrichtigungen, die mit tagOne, tagTwo oder tagThree getaggt sind, verwenden Sie das BridgingConfig Objekt, wie im folgenden Beispiel gezeigt:

// 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()
)

Weiterleitung für alle Benachrichtigungen deaktivieren (nicht empfohlen)

Wenn Sie die Weiterleitung aller Benachrichtigungen von einer Smartphone-App verhindern möchten, verwenden Sie den <meta-data> Eintrag in der Manifestdatei der Smartwatch-App, wie im folgenden Beispiel gezeigt:

<!-- 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" />

Schließungs-ID festlegen, um ähnliche Benachrichtigungen zu synchronisieren

Wenn Sie die Weiterleitung mit der Funktion für den Weiterleitungsmodus verhindern, werden Schließungen von Benachrichtigungen nicht auf den Geräten eines Nutzers synchronisiert.

Wenn jedoch ähnliche Benachrichtigungen sowohl auf dem Smartphone als auch auf der Smartwatch erstellt werden, sollen beide Benachrichtigungen geschlossen werden, wenn der Nutzer eine von ihnen schließt.

In the NotificationCompat.WearableExtender, können Sie eine global eindeutige ID festlegen, sodass beim Schließen einer Benachrichtigung durch einen Nutzer auch andere Benachrichtigungen mit derselben ID auf gekoppelten Smartwatches geschlossen werden.

Die Klasse NotificationCompat.WearableExtender enthält Methoden, mit denen Sie Schließungs-IDs verwenden können, wie im folgenden Beispiel gezeigt:

Wenn der Nutzer die Benachrichtigung schließt, werden alle anderen Benachrichtigungen mit derselben Schließungs-ID auf der Smartwatch und auf dem Smartphone geschlossen. Verwenden Sie getDismissalId(), um eine Schließungs-ID abzurufen.

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

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

Nur lokale Benachrichtigungen

Um doppelte Benachrichtigungen zu vermeiden, können Sie auch setLocalOnly() verwenden, um Benachrichtigungen auf dem Smartphone zu speichern.

Verwenden Sie diese Methode jedoch nur, wenn die Benachrichtigung nur auf dem Gerät angezeigt werden soll, auf dem sie erstellt wurde. Dazu gehören nicht nur Wear OS-Geräte, sondern auch andere Wearables und alle anderen verbundenen Geräte. Eine nur lokale Benachrichtigung wird nicht weitergeleitet, auch wenn Ihre App nicht auf der Smartwatch installiert ist.

Wenn Sie eine Wear OS- und eine Smartphone-App entwickeln, die beide Benachrichtigungen erstellen, verwenden Sie diesen Ansatz nicht, um doppelte Benachrichtigungen zu vermeiden. Verwenden Sie stattdessen die Weiterleitungsoptionen.

Verwenden Sie beispielsweise eine nur lokale Benachrichtigung, wenn ein Nutzer eine Datei auf einem Smartphone herunterlädt und die Benachrichtigung angibt, dass der Download abgeschlossen ist.

Wenn Benachrichtigungen nicht weitergeleitet werden

Das System leitet die folgenden Arten von Benachrichtigungen nicht weiter:

Hinweise zur Implementierung für weitergeleitete Benachrichtigungen

Es dauert einige Zeit, bis weitergeleitete Benachrichtigungen auf ein Wearable übertragen oder von diesem entfernt werden. Vermeiden Sie beim Entwerfen Ihrer Benachrichtigungen unerwartetes Verhalten, das durch diese Latenz verursacht wird. Die folgenden Richtlinien helfen Ihnen dabei, sicherzustellen, dass Ihre weitergeleiteten Benachrichtigungen mit asynchronen Benachrichtigungen funktionieren:

  • Wenn Sie eine Benachrichtigung auf dem Smartphone abbrechen, kann es einige Zeit dauern, bis die entsprechende Benachrichtigung auf der Smartwatch abgebrochen wird. In dieser Zeit kann der Nutzer eine der ausstehenden Intents für diese Benachrichtigung senden. Aus diesem Grund sollten Sie weiterhin ausstehende Intents in Ihrer App von Benachrichtigungen empfangen, die sie abgebrochen hat. Wenn Sie Benachrichtigungen abbrechen, müssen die Empfänger der ausstehenden Intents dieser Benachrichtigungen gültig bleiben.
  • Brechen Sie nicht einen ganzen Stapel von Benachrichtigungen gleichzeitig ab und lösen Sie ihn nicht gleichzeitig neu aus. Ändern oder entfernen Sie nur die Benachrichtigungen, die tatsächlich geändert wurden. Dadurch wird die Latenz beim Aktualisieren des Wearables vermieden und die Auswirkungen Ihrer App auf die Akkulaufzeit werden reduziert.

Designaspekte

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