手錶可以透過 Wear OS by Google 直接和網路通訊,無需 存取 Android 或 iOS 手機。請勿使用 Data Layer API 連結 將 Wear OS 應用程式部署到網路。請改為按照 指南。
網路存取權
Wear OS 應用程式可以發出網路要求。如果手錶具備藍牙功能 手錶的網路流量通常都會透過 Proxy 傳輸至手機 電話。
如果無法購買手機,系統就會使用 Wi-Fi 和行動網路 (具體取決於 手錶硬體。網路轉換作業由 Wear OS 平台負責處理。
您可以使用 HTTP、TCP 和 UDP 等通訊協定,不過,
android.webkit
API (包括 CookieManager
類別) 則
廣告。您可以藉由讀取/寫入要求標頭和
回應。
針對非同步要求使用 WorkManager
,包括定期輪詢
間隔。
如果需要連線到特定的網路類型,請參閱朗讀網路 狀態。
高頻寬網路存取權
Wear OS 平台會管理網路連線,目的是 整體使用者體驗如何平台會根據 在兩種需求之間取得平衡:長效電池續航力和網路頻寬
當優先考量節約耗電量時,使用中的網路可能沒有 具備足夠的頻寬,能處理網路工作,例如傳送大型檔案或串流 媒體。
本節將說明如何使用 ConnectivityManager
類別,
確保應用程式具備所需的網路頻寬。一般問題
如要瞭解如何精細控管網路資源,請參閱
網路用量。
要求 Wi-Fi 連線
需要高頻寬網路存取權的用途,例如傳輸 大型檔案或串流媒體,請要求具有高頻寬的連線 例如 Wi-Fi例如:
Kotlin
val callback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { super.onAvailable(network) // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network) } override fun onLost(network: Network) { super.onLost(network) // Called when a network disconnects or otherwise no longer satisfies this request or callback. } } connectivityManager.requestNetwork( NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback )
Java
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { public void onAvailable(Network network) { super.onAvailable(network); // The Wi-Fi network has been acquired. Bind it to use this network by default. connectivityManager.bindProcessToNetwork(network); } public void onLost(Network network) { super.onLost(network); // Called when a network disconnects or otherwise no longer satisfies this request or callback. } }; connectivityManager.requestNetwork( new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(), callback );
系統可能無法立即取得網路,因為手錶仍會連上 Wi-Fi,或是
為節省電力,系統可能會關閉手機無線電。如果手錶無法連線至
網路,NetworkCallback
執行個體的 onAvailable()
方法不是
物件。
呼叫 onAvailable()
後,裝置會嘗試與
Wi-Fi 網路,直到發布 NetworkCallback
為止。為延長電池續航力,
如以下範例所示,不再需要
Wi-Fi 網路。
Kotlin
connectivityManager.bindProcessToNetwork(null) connectivityManager.unregisterNetworkCallback(callback)
Java
connectivityManager.bindProcessToNetwork(null); connectivityManager.unregisterNetworkCallback(callback);
啟動 Wi-Fi 設定活動
要求 Wi-Fi 網路時,系統會嘗試連線至已儲存的網路
如果有設定在範圍內如果沒有已儲存的 Wi-Fi 網路可用,
系統不會呼叫 NetworkCallback
例項的 onAvailable
回呼方法。
如果您使用 Handler
讓網路要求逾時,可以指示
逾時發生時使用者新增 Wi-Fi 網路。將使用者直接導向
使用下列意圖新增 Wi-Fi 網路的活動:
Kotlin
context.startActivity(Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"))
Java
context.startActivity(new Intent("com.google.android.clockwork.settings.connectivity.wifi.ADD_NETWORK_SETTINGS"));
如要啟動設定活動,應用程式必須具有 CHANGE_WIFI_STATE
權限。
使用者介面考量事項
如果應用程式需要連線到新的 Wi-Fi 網路來處理高頻寬 作業,在執行前,先讓使用者清楚瞭解連線的原因 啟動 Wi-Fi 設定。只要求使用者新增 Wi-Fi 需要高頻寬網路時執行這個虛擬機器請勿封鎖使用者 存取不需要高頻寬網路的應用程式功能。
圖 1 顯示音樂應用程式。使用者可透過這個應用程式, 且只在 下載或串流播放音樂。
圖 1. 下載音樂的音樂應用程式流程。
電源和資料使用注意事項
為了延長電池續航力並盡量減少行動數據用量,請將任何設定延後 重要網路工作,例如數據分析報告或記錄檔收集 直到 Wear OS 裝置重新建立藍牙或 Wi-Fi 連線 而不是 LTE 或計量付費連線
雲端通訊
如要傳送通知,請直接使用 Firebase 雲端通訊 (FCM)。
Wear OS 並無專用的網路存取或 FCM API。請參閱 「連線到網路」及「雲端通訊」的說明文件。
FCM 可與「打盹」搭配使用,這是傳送通知的方法 在手錶上操作
收集裝置註冊權杖,為 FCM 的訊息做好準備 Wear OS 應用程式的執行時間再將權杖做為目的地的一部分 您伺服器傳送訊息至 FCM REST 端點時FCM 會將訊息傳送至 憑證識別的裝置
FCM 訊息為 JavaScript Object Notation (JSON) 格式,可加上 下列其中一個酬載或同時採用兩者:
- 通知酬載:接收到通知酬載時 資料就會直接在通知串流中向使用者顯示。時間 使用者輕觸通知,您的應用程式就會啟動。
- 資料酬載:具有一組自訂鍵或值組合時。 酬載會以資料形式傳送到您的 Wear OS 應用程式。
如果想進一步瞭解酬載和查看範例,請參閱「關於 FCM 訊息」。
根據預設,系統會將通知從手機應用程式橋接到手錶。如果您有 獨立的 Wear OS 應用程式和對應的手機應用程式,重複通知 會發生什麼事例如,來自 FCM 的一則通知,並受 手機和手錶可獨立顯示。你可以 為了避免這種情況,請使用橋接 API。
使用背景服務
為確保背景工作能正確執行,背景工作必須 適用於 Doze 和應用程式待命系統。
當螢幕關閉或進入微光模式達到一定時間後,
可能會延遲,且背景任務可能會延後一段時間。
之後,如果裝置長時間處於閒置狀態,便會進入常規「打盹」模式。
使用 WorkManager
API 排程要求,讓應用程式能夠註冊
,在「打盹」模式下順利執行程式碼
設定含有限制條件的排程要求
您可以限制設定要求,藉此節省電力 生活。請在您的 要求:
排程需要網路的要求。
指定
NetworkType
要採用CONNECTED
還是UNMETERED
。UNMETERED
適合傳輸大型資料,而CONNECTED
適合傳輸小型資料 傳輸。在充電時排程要求。
在裝置閒置時排程要求。這對於使用者 優先順序較低的背景工作或同步處理 裝置正在充電。
詳情請參閱 WorkManager 的「限制條件對 定期工作指南。