ウォッチフェイスのプッシュ

Wear OS 6 では、新しい API である Watch Face Push が導入され、より高度なウォッチフェイスの公開ユースケースの機会が生まれます。

ウォッチフェイス プッシュを使用するタイミングを特定する

ウォッチフェイス プッシュは、デベロッパーがウォッチフェイスを直接追加、更新、削除できる Wear OS の API です。標準のウォッチフェイスの開発には必要ありません。

Watch Face Push で使用するウォッチフェイスは、Watch Face Format を使用して記述する必要があります。これには、ウォッチフェイス デザイナー、ウォッチフェイス スタジオ、または Watch Face Format を使用するウォッチフェイスを作成するその他のツールを使用してデザインされたウォッチフェイスが含まれます。

Watch Face Push API はさまざまな方法で使用できますが、次の表では主なユースケースについて説明します。

ユースケース 推奨方法 複雑さ
個々のウォッチフェイスを作成して公開したい。 Watch Face Format を直接使用するか、Watch Face Designer やウォッチフェイス スタジオなどのツールを使用して、Google Play で公開します。
ユーザーが厳選されたコレクションからウォッチフェイスを選択したり、Wear OS スマートウォッチに直接インストールするウォッチフェイスをデザインしてカスタマイズしたりできるスマートフォン アプリを作成したい。 スマートウォッチの Watch Face Push API を使用して、スマートウォッチとスマートフォンの両方に対応するアプリを作成します。

目的

Watch Face Push API の標準的なユースケースは、マーケットプレイス アプリを作成することです。このアプリから、ユーザーはスマートフォンで厳選されたコレクションからウォッチフェイスを選択し、接続されたスマートウォッチへのウォッチフェイスのインストールを直接制御できます。

考慮事項

ウォッチフェイスのビルドについて詳しくは、Watch Face Format のガイダンスをご覧ください。Watch Face Push を使用してデプロイされたウォッチフェイスは、通常の Watch Face Format のウォッチフェイスです。

ウォッチフェイスを作成する際は、次の点を考慮してください。

パッケージ名

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 のコンテンツを厳格に適用します。無害なメタデータ ファイルやその他のアーティファクトを含む Watch Face Format APK を作成することは技術的に可能ですが、Google Play では許容されても、Watch Face Push の検証には合格しない可能性があります(下記を参照)。

各ウォッチフェイス APK には、次のファイル/パスのみを含める必要があります。

  • /AndroidManifest.xml
  • /resources.arsc
  • /res/**
  • /META-INF/**

また、AndroidManifest.xml ファイルには次のタグのみが含まれている必要があります。

  • <manifest>
  • <uses-feature>
  • <uses-sdk>
  • <application>
  • <property>
  • <meta-data>

最後に、パッケージは少なくとも 33minSdk を指定する必要があり、<application> タグは属性 android:hasCode="false" を指定する必要があります。

検証

Google Play を通じて配信される通常のウォッチフェイスとは異なり、マーケットプレイス アプリは、各 Watch Face Push ウォッチフェイスが整形式でパフォーマンスに優れていることを確認する役割を担います。

ウォッチフェイス プッシュでは、次の検証チェックを使用して各ウォッチフェイスの品質を検証します。

  1. Watch Face Push API を通じてインストールまたは更新されるすべてのウォッチフェイスは、Watch Face Push 検証ツールに合格する必要があります。
  2. API で使用する検証トークンを生成するには、公式の検証ツールのみを使用してください。
  3. 検証を実行する際は、検証ツールが最新の状態である必要があります。
  4. 変更されていない APK を再検証する必要はありません。使用された検証ツールのバージョンが置き換えられても、トークンの有効期限は切れません。

    また、検証ツールは定期的に更新されるため、検証を定期的に再実行することをおすすめします。

バリデータを実行する

検証ツールは次の 3 つの形式で利用できます。

  • CLI ツール
  • JVM で使用するライブラリ
  • Android で使用するライブラリ

コマンドライン バリデータの使用

  1. Google の Maven リポジトリからバリデーターを取得します。
  2. 次のようにツールを実行します。

    java -jar validator-push-cli-1.0.0-alpha07.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

    成功すると、出力に検証トークンが含まれます。このトークンは、ウォッチフェイスを追加または更新するときに Watch Face Push API に提供する必要があります。

    エラーが発生した場合、出力には失敗した特定のチェックに関する詳細が含まれます。

ライブラリ検証ツールの使用

  1. Google リポジトリと Jitpack リポジトリを含めます。バリデータ ライブラリを使用するには、両方が必要です。

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. プロジェクトにバリデータ依存関係を含めます。

    // For use on JVM
    implementation("com.google.android.wearable.watchface.validator:validator-push:1.0.0-alpha07")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha07")
    
    
  3. 検証ツールを実行します。

val validator = DwfValidatorFactory.create() val result = validator.validate(watchFaceFile, appPackageName) if (result.failures().isEmpty()) { val token = result.validationToken() println("Validation token: $token") // Validation success - continue with the token // ... } else { // There were failures, handle them accordingly - validation has failed. result.failures().forEach { failure -> println("FAILURE: ${failure.name()}: ${failure.failureMessage()}") // ... } }

このライブラリの使用例については、GitHub サンプルをご覧ください。Android ベースのバリデータで使用するオンデバイス APK のビルドに役立つ、Portable Asset Compiler Kit(Pack)ライブラリもご覧ください。

APK サイズ

ウォッチフェイス プッシュのウォッチフェイスでは、APK サイズを最小限に抑えるように特に注意してください。ウォッチフェイス APK は、Bluetooth 経由でスマートフォン アプリからスマートウォッチ アプリに送信される可能性が高く、その場合、処理が遅くなることがあります。

APK が大きすぎると、送信にかなりの時間がかかり、ユーザー エクスペリエンスの低下とバッテリーの消耗につながります。

  • pngquant などの適切なライブラリを使用して、画像ファイルのサイズを最小限に抑えます。
    • ウォッチフェイス コレクションのビルドプロセスに含める
    • 画像のサイズが、使用するスケールに適していることを確認します。
    • 画像を適切に切り抜いて、周囲の背景を削除します。
  • フォント ファイルのサイズを縮小する
    • たとえば、特定のフォントを HH:MM 形式で時刻を表示するためだけに使用する場合は、pyftsubset などのツールを使用して、必要なグリフのみを含むようにフォント ファイルを制限できます。これにより、生成されるフォント ファイルと APK のサイズを大幅に削減できます。フォント ファイルのサイズを最小限に抑える方法については、こちらのブログ投稿をご覧ください。

APK サイズを最小限に抑えるためのその他の提案については、メモリ使用量の最適化に関するガイダンスをご覧ください。

APK 署名

通常の APK と同様に、すべてのウォッチフェイスに署名する必要があります。メインアプリで使用するキーとは別のキーを作成し、すべてのウォッチフェイスにそのキーを使用します。

アーキテクチャ

システムの 4 つの主要コンポーネントについて考えてみましょう。

  1. クラウドベースのストレージ: 標準の Marketplace アプリでは、ウォッチフェイスをクラウドで作成して保存し、ユーザーが使用できるようにします。文字盤には次のプロパティがあります。
    1. これらは、通常の Watch Face Format APK としてビルド済みです。
    2. 各 APK には、ウォッチフェイス形式に基づくウォッチフェイスが 1 つだけ含まれています。
    3. これらは Watch Face Push 検証プロセスで検証され、関連付けられた検証トークンとともに保存されます。
    4. 電話アプリは必要に応じてこれらを取得できます。
  2. 電話アプリ: 電話アプリは、ユーザーがシステムとやり取りする主な方法です。これにより、次のことが可能になります。
    1. ウォッチフェイスのカタログを閲覧、検索する
    2. スマートウォッチの文字盤をインストールまたは変更する
  3. スマートウォッチ アプリ: スマートウォッチ アプリには通常、重要なユーザー インターフェースがない場合があります。主にスマートフォン アプリとウォッチフェイス プッシュ API の間のブリッジとして機能し、次の機能を備えています。
    1. Watch Face Push API を使用してウォッチフェイスをインストール、更新、または置き換える
    2. 必要な権限をリクエストしてユーザーにプロンプトを表示する
    3. デフォルトのウォッチフェイスを提供する
    4. ウォッチフェイスの最小限のキャッシュを提供する
  4. スマートフォンとスマートウォッチの通信: スマートフォンとスマートウォッチのアプリの通信は、全体的なエクスペリエンスの成功に不可欠です。Wear OS Data Layer API を使用します。これにより、次のことが可能になります。
    1. インストール検出: Capabilities と CapabilityClient を使用して、スマートフォン アプリはスマートウォッチ アプリがないことを検出できます。逆も同様です。その後、不足しているフォーム ファクタをインストールするために、Play ストアへのインテントを起動できます。
    2. 状態管理: DataClient または MessageClient を使用して、アクティブなウォッチフェイスの状態を同期するなど、スマートウォッチの状態とスマートフォンの状態を同期させます。
    3. APK の送信: ChannelClient または MessageClient を使用して、スマートフォンからスマートウォッチに APK を送信します。
    4. リモート呼び出し: Messageclient を使用して、スマートフォンからスマートウォッチに Watch Face Push API を呼び出すよう指示できます(ウォッチフェイスのインストールなど)。

詳しくは、データレイヤ API のガイダンスをご覧ください。