Wear OS 6 推出了新的 API「錶面推送」,可用於更進階的錶面發布用途。
判斷使用錶面推播的時機
Watch Face Push 是 Wear OS 上的 API,可讓開發人員直接新增、更新或移除錶面。標準錶面開發作業不需要這項資訊。
使用錶面推送功能的錶面必須使用錶面格式編寫。這包括使用 Watch Face Studio 設計的錶面,或是任何其他使用錶面格式產生錶面的工具。
雖然錶面推播 API 可用於多種用途,但您可以參考下表,瞭解主要用途:
用途 | 建議解決方法 | 複雜度 |
---|---|---|
我想建立個別錶面並發布。 | 直接使用錶面格式,或透過 Watch Face Studio 等工具,將錶面發布至 Google Play。 | 低 |
我想建立手機應用程式,讓使用者從精選集合中選取錶面,或設計及自訂錶面,直接安裝在 Wear OS 手錶上。 | 使用手錶上的 Watch Face Push API,為手錶和手機建立應用程式。 | 高 |
目的
錶面推播 API 的標準用途是建立市集應用程式。使用者可以透過這個應用程式,從手機上精選的錶面集合中選取錶面,並直接控制這些錶面在已連結手錶上的安裝作業。
注意事項
如要進一步瞭解如何建構錶面,請參閱「錶面格式」指南:使用 Watch Face Push 部署的錶面為一般錶面格式錶面。
製作錶面時,請考量下列事項。
套件名稱
使用 Watch Face Push 安裝的錶面必須符合下列慣例:
<app name>.watchfacepush.<watchface name>
... 其中 <app name>
是呼叫 Watch Face Push API 的應用程式套件名稱。
舉例來說,如果應用程式的套件名稱為 com.example.mymarketplace
,則下列為有效的錶面套件名稱:
com.example.mymarketplace.watchfacepush.watchface1
com.example.mymarketplace.watchfacepush.watchface2
com.example.mymarketplace.watchfacepush.another_watchface
API 會拒絕不符合此慣例的錶面。
套件內容
我們會嚴格執行 APK 內容。請務必確保錶面格式符合下列限制:從技術層面來說,您可以產生含有無害中繼資料檔案和其他構件的錶面格式 APK,這些 APK 可能會通過 Google Play 的驗證,但無法通過錶面推送驗證 (請參閱下文)。
每個錶面 APK 中僅接受下列檔案/路徑:
/AndroidManifest.xml
/resources.arsc
/res/**
/META-INF/**
此外,AndroidManifest.xml
檔案中僅允許使用下列標記:
<manifest>
<uses-feature>
<uses-sdk>
<application>
<property>
<meta-data>
最後,套件應指定至少 33
的 minSdk
,而 <application>
標記應指定屬性 android:hasCode="false"
。
驗證
與透過 Google Play 發行的一般錶面不同,Marketplace 應用程式負責執行錶面推送檢查,確保每個錶面都具備良好的格式和效能。
Google Play 會使用下列驗證檢查,驗證每個使用錶面推送功能的錶面品質:
- 所有透過 Watch Face Push API 安裝或更新的錶面都必須通過 Watch Face Push 驗證工具。
- 只有官方驗證工具可用於產生驗證權杖,以便與 API 搭配使用。
- 執行驗證時,使用的驗證工具必須為最新版本。
您不需要重新驗證未變更的 APK。即使所用驗證工具的版本已淘汰,憑證也不會過期。
同時,我們建議您定期重新執行驗證作業,因為驗證工具會定期更新。
執行驗證工具
如要在錶面 APK 上執行驗證工具,請按照下列步驟操作:
- 從 Google 的 Maven 存放區取得驗證器。
請按照下列步驟執行工具:
java -jar validator-push-cli-1.0.0-alpha01.jar \ --apk_path=youwatchface.apk \ --package_name=<your marketplace package name>
如果成功,輸出內容會包含驗證權杖,您必須在新增或更新錶面時,將此權杖提供給錶面推送 API。
如果發生錯誤,輸出內容會包含哪項特定檢查失敗的詳細資料。
如需將驗證器 CLI 工具納入 Gradle 建構作業的範例,請參閱 GitHub 上的 Watch Face Push 範例。
APK 尺寸
請特別留意錶面推送錶面,確保 APK 大小保持在最小值:錶面 APK 很可能會透過藍牙從手機應用程式傳送至手錶應用程式,而這可能會造成傳輸速度緩慢。
過大的 APK 可能需要相當長的時間才能傳輸,不僅使用者體驗不佳,也會耗用電力。
- 使用適當的程式庫 (例如
pngquant
),盡可能縮減圖片檔案大小- 將這項資訊納入錶面集合建構程序
- 確認圖片的尺寸是否適合用於指定的縮放比例。
- 請務必適當裁剪圖片,移除周圍背景。
- 縮減字型檔案大小
- 舉例來說,如果您只使用特定字型來顯示時間,且格式為
HH:MM
,您可以使用pyftsubset
等工具,將字型檔案限制為只包含必要的字形。這樣一來,產生的字型檔案和 APK 大小就會大幅縮減。如要瞭解其他情況下如何縮減字型檔案大小,請參閱這篇網誌文章。
- 舉例來說,如果您只使用特定字型來顯示時間,且格式為
如需有關如何盡量縮小 APK 大小的建議,請參閱記憶體用量最佳化指南。
APK 簽署
所有錶面都必須簽署,就像一般 APK 一樣。請建立與主要應用程式不同的金鑰,並為所有錶面使用該金鑰。
建築
請考慮系統的三個主要元件:
- 雲端儲存空間:在標準的市集應用程式中,您可以建立並儲存在雲端的錶面,供使用者使用。錶面如下:
- 預先建構為一般錶面格式 APK
- 每個錶面都只包含一個採用錶面格式的錶面
- 已使用錶面推播驗證程序驗證,並與相關聯的驗證權杖一併儲存。
- 隨時可供手機應用程式在需要時擷取。
- 電話應用程式:電話應用程式是使用者與系統互動的主要方式。這項功能可讓他們:
- 瀏覽及搜尋錶面目錄
- 在手錶上安裝或更換錶面
- 手錶應用程式:手錶應用程式通常沒有重要的使用者介面。它主要是手機應用程式和 Watch Face Push API 之間的橋樑,具有以下功能:
- 使用 Watch Face Push API 安裝/更新或取代錶面
- 要求必要權限並提示使用者
- 提供預設錶面
- 提供錶面的最小快取
- 手機與手錶的通訊功能:手機和手錶應用程式的通訊功能是整體體驗成功的關鍵。使用 Wear OS Data Layer API,可執行以下操作:
- 安裝偵測功能:使用「功能」和
CapabilityClient
,手機應用程式可偵測手錶應用程式是否缺少,反之亦然。接著,您可以向 Play 商店發出意圖,安裝缺少的板型規格。 - 狀態管理:使用
DataClient
或MessageClient
,可讓手機與手錶的狀態保持同步,例如確保手機知道設定了哪個錶面。 - APK 傳輸:使用
ChannelClient
或MessageClient
,即可將 APK 從手機傳送至手錶 - 遠端叫用:使用
Messageclient
,手機可指示手錶呼叫 Watch Face Push API,例如安裝錶面。
- 安裝偵測功能:使用「功能」和
詳情請參閱資料層 API 指南。