Überbrückungsoptionen für Benachrichtigungen

Standardmäßig werden Benachrichtigungen von einer App auf einem Smartphone an alle gekoppelten Smartwatches weitergeleitet oder geteilt. 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 über eine externe Quelle wie Firebase Cloud Messaging erstellen, können Ihre mobile App und Ihre Wearable-App jeweils eigene Benachrichtigungen auf der Smartwatch anzeigen. Um diese Art von Duplizierung zu vermeiden, deaktivieren Sie die Brückenfunktion in Ihrer Wearable-App programmatisch.

Bridge-Tags verwenden

Wenn Sie einige der in Ihrer mobilen App erstellten Benachrichtigungen auf die Smartwatch weiterleiten möchten, wenn Ihre Wearable-App installiert ist, legen Sie Bridge-Tags fest.

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

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

Teilen deaktivieren

Sie können die Überbrückung für bestimmte oder alle Benachrichtigungen deaktivieren. Wir empfehlen, die Bridge-Funktion selektiv zu deaktivieren.

Bridging für einige Benachrichtigungen deaktivieren

Sie können die Bridge-Funktion dynamisch deaktivieren und optional einige Benachrichtigungen basierend auf ihrem Tag zulassen. Wenn Sie beispielsweise das Bridging für alle Benachrichtigungen deaktivieren möchten, die nicht 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()
)

Brückenfunktion für alle Benachrichtigungen deaktivieren (nicht empfohlen)

Hinweis:Es wird nicht empfohlen, die Überbrückung für alle Benachrichtigungen zu deaktivieren, da die im Manifest festgelegte Überbrückungskonfiguration in Kraft tritt, sobald eine Smartwatch-App installiert wird. Das kann dazu führen, dass Benachrichtigungen verloren gehen, wenn der Nutzer die Smartwatch-App erst öffnen und einrichten muss, bevor er Benachrichtigungen erhält.

Wenn Sie verhindern möchten, dass alle Benachrichtigungen von einer Smartphone-App weitergeleitet werden, verwenden Sie den Eintrag <meta-data> 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" />

Hinweis:Wenn Sie eine Bridging-Konfiguration zur Laufzeit angeben, wird eine Bridging-bezogene Einstellung in der Android-Manifestdatei überschrieben.

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

Wenn Sie die Überbrückung mit der Funktion „Überbrückungsmodus“ verhindern, werden geschlossene Benachrichtigungen nicht geräteübergreifend synchronisiert.

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

Im NotificationCompat.WearableExtender kannst du eine global eindeutige ID festlegen, damit beim Schließen einer Benachrichtigung auch andere Benachrichtigungen mit derselben ID auf gekoppelten Smartwatches geschlossen werden.

Die Klasse NotificationCompat.WearableExtender hat Methoden, mit denen Sie Dismissal-IDs verwenden können, wie im folgenden Beispiel gezeigt:

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

Im folgenden Beispiel wird eine global eindeutige ID für eine neue Benachrichtigung angegeben, damit Schließvorgänge synchronisiert werden:

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

Hinweis:Dismissal-IDs funktionieren, wenn eine Smartwatch mit einem Android-Smartphone gekoppelt ist, aber nicht, wenn sie mit einem iPhone gekoppelt ist.

Wenn Benachrichtigungen nicht übertragen werden

Die folgenden Benachrichtigungstypen werden nicht übertragen:

Best Practices für überbrückte Benachrichtigungen

Es dauert eine Weile, bis weitergeleitete Benachrichtigungen auf einem Wearable angezeigt oder entfernt werden. Achten Sie beim Entwerfen Ihrer Benachrichtigungen darauf, unerwartetes Verhalten zu vermeiden, das durch diese Latenz verursacht wird. Die folgenden Richtlinien helfen Ihnen dabei, dafür zu sorgen, dass Ihre überbrückten Benachrichtigungen mit asynchronen Benachrichtigungen funktionieren:

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

Designaspekte

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