通知的橋接選項

根據預設,系統會橋接或分享手機應用程式的通知到配對手錶。如果您建構的手錶應用程式也同時存在於配對手機上,使用者可能會收到重複的應用程式通知:其中一則通知由手機應用程式產生並橋接,另外一則由手錶應用程式產生。Wear OS 提供用於控制通知橋接方式和時間的功能。

避免重複通知

如果您使用 Firebase 雲端通訊等外部來源建立通知,手機應用程式和手錶應用程式就可以各自在手錶上顯示自己的通知。為避免重複通知,請在手錶應用程式中透過程式輔助方式停用橋接功能。

使用橋接標記

如要在安裝手錶應用程式時,將手機應用程式建立的部分通知橋接到手錶,請設定橋接標記。

使用 setBridgeTag(String) 方法即可為通知設定橋接標記,如以下程式碼範例所示:

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

停用橋接功能

您可以停用部分通知或所有通知的橋接功能。建議您選擇性停用橋接功能。

停用部分通知的橋接功能

您可以動態方式停用橋接功能,並視需要依據通知的標記允許顯示部分通知。舉例來說,如要停用除了標記 tagOnetagTwotagThree 之外所有通知的橋接功能,請使用 BridgingConfig 物件,如下列範例中所示:

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

停用所有通知的橋接功能 (不建議)

如要防止手機應用程式的所有通知執行橋接功能,請在手錶應用程式的資訊清單檔案中使用 <meta-data> 項目,如以下範例所示:

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

設定關閉 ID 以同步處理類似的通知

如果您用橋接模式功能停用橋接功能,系統就不會同步處理使用者裝置上的關閉通知行為。

但是,如果手機和手錶都會建立類似的通知,建議您在使用者關閉任一裝置上的通知後,讓系統同時關閉兩邊的通知。

您可以在 NotificationCompat.WearableExtender 內設定全域專屬 ID,這樣一來,只要使用者關閉一則通知,也會一併關閉配對手錶上具有相同 ID 的其他通知。

NotificationCompat.WearableExtender 類別內備有可讓您使用關閉 ID 的方法,請看以下範例:

使用者關閉通知時,系統會關閉手錶和手機上使用相同關閉 ID 的通知。如要擷取關閉 ID,請使用 getDismissalId()

以下範例為每個新通知指定全域專屬 ID,這樣既可同步處理關閉行為:

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

僅限本機通知

如要避免重複收到通知,也可以使用 setLocalOnly() 將通知限制在手機上。

不過,只有在通知「必須」顯示在建立通知的裝置上時,才使用這個方法。這包括 Wear OS 裝置、其他穿戴式裝置和任何其他連線裝置。即使應用程式未安裝在手錶上,僅限本機的通知也不會橋接。

建構 Wear OS 和手機應用程式時,如果兩者都會建立通知,請勿使用這種方法,以免重複發出通知。請改用橋接選項。

舉例來說,使用者在手機上下載檔案時,如果通知指出下載完成,請使用僅限本機的通知。

不橋接通知的情況

系統不會橋接下列類型的通知:

橋接通知的導入注意事項

從穿戴式裝置推送或移除橋接通知都需要時間。設計通知時,請避免由於這個延遲時間而發生預料之外的行為。以下指南可協助確保在非同步通知的情況下順利使用橋接通知:

  • 在手機上取消通知時,系統可能需要一點時間才能取消手錶上對應的通知。在這段期間,使用者可能會透過該通知傳送其中一個待處理的意圖。因此,應用程式可從自己已取消的通知接收待處理意圖:在取消通知時,請保持通知的待處理意圖接收器有效。
  • 請勿一次取消並重新觸發整個堆疊的通知。只修改或移除內容實際有所變動的通知。這樣做可以避免因更新穿戴式裝置而造成延遲,並降低應用程式對電池續航力的影響。

設計須知

Wear OS 通知有專屬的設計規範。詳情請參閱「Wear OS 設計規範」。