Die Android NDK-Entwicklung erläutert die Überbrückungsoptionen von Wear-Benachrichtigungen ausführlich


Standardmäßig werden Benachrichtigungen von der App auf Ihrem Telefon an die gekoppelte Uhr weitergeleitet (geteilt). Wenn Sie eine Uhren-App erstellen, die auch auf einem gekoppelten Telefon vorhanden ist, erhalten Benutzer möglicherweise doppelte Benachrichtigungen: eine, die von der Telefon-App generiert und überbrückt wird, und eine andere, die von der Uhren-App generiert wird. Sie können die von Wear OS bereitgestellten Funktionen nutzen, um zu steuern, wie und wann Benachrichtigungen überbrückt werden.

Vermeiden Sie die Anzeige doppelter Benachrichtigungen

Wenn Sie zum Erstellen von Benachrichtigungen eine externe Quelle (z. B. Firebase Cloud Messaging) verwenden, zeigen Ihre mobile App und Ihre Wearable-App möglicherweise jeweils ihre eigenen Benachrichtigungen auf der Uhr an. Um diese doppelten Benachrichtigungen zu vermeiden, deaktivieren Sie Bridging programmgesteuert in Ihrer Wearable-App.

Verwenden Sie das Bridge-Tag

Wenn Sie einige in der mobilen App erstellte Benachrichtigungen nach der Installation der Wearable-App auf die Uhr übertragen möchten, setzen Sie das Bridge-Flag.

Sie können mit der Methode setBridgeTag(String) 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()

Überbrückung deaktivieren

Sie können Bridging für einige Benachrichtigungen oder für alle Benachrichtigungen deaktivieren. Es wird empfohlen, Bridging selektiv zu deaktivieren.

Bridging für bestimmte Benachrichtigungen deaktivieren
Sie können Bridging dynamisch deaktivieren und optional zulassen, dass bestimmte Benachrichtigungen basierend auf ihren Tags angezeigt werden. Um beispielsweise Bridging für alle Benachrichtigungen außer den Tags tagOne, tagTwo oder tagThree zu deaktivieren, verwenden Sie das BridgingConfig-Objekt, 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: Das Deaktivieren von Bridging für alle Benachrichtigungen wird nicht empfohlen, da die im Manifest festgelegte Bridge-Konfiguration nach der Installation der Watch-App gelöscht wird . Sofort Wirksam. Diese Konfiguration kann dazu führen, dass Benachrichtigungen verloren gehen, wenn der Benutzer die Watch-App öffnen und einrichten muss, bevor er Benachrichtigungen erhält.

Um zu vermeiden, dass alle Benachrichtigungen von der Telefon-App überbrückt werden, verwenden Sie einen Eintrag in der Manifestdatei der Watch-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: Die Angabe einer Bridge-Konfiguration zur Laufzeit überschreibt Bridge-bezogene Einstellungen in der Android-Manifestdatei.

Legen Sie eine Abschluss-ID fest, um ähnliche Benachrichtigungen zu synchronisieren

Wenn Sie die Bridge-Modus-Funktion verwenden, um Bridging zu verhindern, wird das Verhalten beim Verwerfen von Benachrichtigungen nicht auf allen Geräten des Benutzers synchronisiert.

Wenn Sie jedoch ähnliche Benachrichtigungen sowohl auf dem Mobilgerät als auch auf der Uhr erstellen, empfehlen wir, dass Sie das System veranlassen, die Benachrichtigung auf beiden Geräten zu schließen, nachdem der Benutzer die Benachrichtigung auf einem der beiden Geräte geschlossen hat.

Sie können in NotificationCompat.WearableExtender eine global eindeutige ID festlegen, sodass nach dem Schließen einer der Benachrichtigungen auch die anderen Benachrichtigungen mit derselben ID auf der gekoppelten Uhr geschlossen werden.

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


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

Für synchrones Abschaltverhalten verwenden Sie die Methode setDismissalId(). Wenn Sie die Methode setDismissalId() aufrufen, übergeben Sie für jede Benachrichtigung eine global eindeutige ID als Zeichenfolge.

Wenn eine Benachrichtigung geschlossen wird, werden auch alle anderen Benachrichtigungen mit derselben Entlassungs-ID auf Ihrer Uhr und Ihrem Telefon geschlossen. Um die Shutdown-ID abzurufen, verwenden Sie getDismissalId().

Im folgenden Beispiel wird das Abschaltverhalten synchronisiert, da der neuen Benachrichtigung eine global eindeutige ID zugewiesen wird:

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

Hinweis: Das Ausschalten der ID funktioniert, wenn die Uhr mit einem Android-Telefon gekoppelt ist, nicht jedoch, wenn die Uhr mit einem iPhone gekoppelt ist.

Fälle, in denen Benachrichtigungen nicht überbrückt werden

Die folgenden Arten von Benachrichtigungen werden nicht überbrückt:

Nur lokale Benachrichtigung mit Notification.Builder.setLocalOnly(boolean) festgelegt.
Laufende Benachrichtigungen, die mit Notification.Builder.setOngoing(boolean) oder Notification.FLAG_ONGOING_EVENT festgelegt werden.
Nicht löschbare Benachrichtigungen, die mit Notification.FLAG_NO_CLEAR festgelegt werden.
Benachrichtigungen werden angezeigt, wenn die entsprechende tragbare App die Benachrichtigungsüberbrückung deaktiviert hat, wie oben beschrieben.

Best Practices für Bridge-Benachrichtigungen

Das Verschieben oder Entfernen von Bridge-Benachrichtigungen vom tragbaren Gerät dauert einige Zeit. Achten Sie beim Entwerfen von Benachrichtigungen darauf, unerwartetes Verhalten zu vermeiden, das durch diese Verzögerung verursacht wird. Die folgenden Richtlinien tragen dazu bei, sicherzustellen, dass Bridge-Benachrichtigungen mit asynchronen Benachrichtigungen funktionieren:

Wenn Sie eine Benachrichtigung auf Ihrem Telefon abbrechen, kann es einige Zeit dauern, bis die entsprechende Benachrichtigung auf Ihrer Uhr abgebrochen wird. Während dieser Zeit kann der Benutzer eine der ausstehenden Absichten in der Benachrichtigung senden. Erhalten Sie daher weiterhin ausstehende Absichten für abgebrochene Benachrichtigungen in Ihrer App: Stellen Sie beim Abbrechen von Benachrichtigungen sicher, dass die Empfänger ausstehender Absichten für diese Benachrichtigungen gültig sind.
Brechen Sie nicht alle Benachrichtigungen in einem Stapel auf einmal ab und lösen Sie sie erneut aus. Ändern oder entfernen Sie nur Benachrichtigungen, die tatsächlich geändert wurden. Dadurch werden Verzögerungen bei der Aktualisierung von Wearables vermieden und die Auswirkungen von Apps auf die Akkulaufzeit verringert.
Designüberlegungen
Für Wear OS-Benachrichtigungen gelten eigene Designrichtlinien. Weitere Informationen finden Sie im Wear OS-Designleitfaden.

Die Inhalte und Codebeispiele auf dieser Seite unterliegen der im Abschnitt „Inhaltslizenz“ beschriebenen Lizenz. Java und OpenJDK sind eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen.

Letzte Aktualisierung (UTC): 13.11.2023.

Supongo que te gusta

Origin blog.csdn.net/hnjzfwy/article/details/134915037
Recomendado
Clasificación