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

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

Watch Face Push を使用するタイミングを特定する

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

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

ウォッチフェイス プッシュ API はさまざまな方法で使用できますが、主なユースケースについては次の表をガイドとして使用してください。

ユースケース 推奨方法 複雑さ
個々のウォッチフェイスを作成して公開したい。 Watch Face Format を直接使用するか、ウォッチフェイス デザイナーやウォッチフェイス スタジオなどのツールを使用して、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 が次の制約に準拠していることを確認する必要があります。無害なメタデータ ファイルやその他のアーティファクトを含む 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 では、各ウォッチフェイスが整形式でパフォーマンスが高いことを確認する責任は Marketplace アプリにあります。

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

  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-alpha06.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

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

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

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

  1. バリデータ依存関係に必要な 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:1.0.0-alpha06")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator-android:1.0.0-alpha06")
    
    
  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 などの適切なライブラリを使用して、画像ファイルのサイズを最小限に抑えます。
    • ウォッチフェイス コレクションのビルドプロセスに含める
    • 画像のサイズが、使用されるスケールに適していることを確認します。
    • 画像が適切に切り抜かれ、周囲の背景が削除されていることを確認します。
  • フォント ファイルのサイズを縮小する

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

APK 署名

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

アーキテクチャ

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

  1. クラウドベースのストレージ: 標準の Marketplace アプリでは、文字盤はクラウドでビルドおよび保存され、ユーザーが使用できるようになっています。文字盤は次のとおりです。
    1. 通常の Watch Face Format APK として事前ビルド
    2. それぞれに Watch Face Format ベースのウォッチフェイスが 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 を使用して、スマートフォン アプリはスマートウォッチ アプリがないことを検出できます。逆も同様です。その後、不足しているフォーム ファクタをインストールするために、Google Play ストアへのインテントを起動できます。
    2. 状態管理: DataClient または MessageClient を使用して、スマートフォンの状態をスマートウォッチの状態と同期させることができます。たとえば、スマートフォンの状態をスマートウォッチの状態と同期させることができます。
    3. APK 転送: ChannelClient または MessageClient を使用して、スマートフォンからスマートウォッチに APK を送信できます。
    4. リモート呼び出し: Messageclient を使用して、スマートフォンからウォッチフェイス Push API を呼び出すようスマートウォッチに指示できます(ウォッチフェイスのインストールなど)。

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