App Actions を作成する

App Actions を作成すると、ユーザーは Google アシスタントにリクエストするか、またはアシスタントが提示する Android ショートカットを使用して、Android アプリで機能を起動できるようになります。App Actions で Android アプリを拡張する基本的な手順は次のとおりです。

  1. トリガーするアプリ内機能と、それに対応する組み込みインテント(BII)を特定します。
  2. BII のフルフィルメントの詳細を指定します。
  3. App Action のショートカットをアシスタントにプッシュします。
  4. テストデバイスで App Actions をプレビューします。
  5. アプリのテストリリースを作成します。
  6. App Actions の審査とデプロイをリクエストします。

オプションとして、アシスタントがユーザーに提示する動的ショートカットを定義できます。App Actions の Codelab の手順に沿って、サンプルアプリで App Action を作成します。

要件

App Actions の開発を開始する前に、お客様とお客様のアプリが次の要件を満たしていることを確認してください。

  • Google Play Console にアクセスできる Google アカウントが必要です。
  • App Actions は Google Play ストアで公開されているアプリでのみ使用できるため、アプリは Google Play ストアに公開されている必要があります。また、App Actions は managed Google Play ではサポートされないため、アプリが仕事用プロファイルでの使用を想定していないことを確認してください。
  • App Actions をテストするには、物理デバイスまたは仮想デバイスが必要です。
  • Google アシスタント プラグインでサポートされている、互換性のある最新バージョンの Android Studio をインストールします。
  • 同じ Google アカウントを使用して、Android Studio、テストデバイス上の Google アプリ、Google Play Console にログインする必要があります。
  • テストデバイスでアシスタントを設定し、ホームボタンを長押ししてテストする必要があります。

アプリの機能と一致する組み込みインテントを見つける

ユーザーが音声リクエストで移動する Android アプリの機能を特定し、組み込みインテントのリファレンスを確認して、ユースケースに適した BII を見つけます。BII は、ユーザーが実行したいタスクのユーザークエリをモデル化しているため、アプリの主要機能とユーザーフローに一致する BII を見つけます。

ほとんどすべての Android アプリで使用できる一般的な BII があります。たとえば、actions.intent.GET_THING BII を使用すると、アプリ内検索をアシスタントに拡張できます。また、actions.intent.OPEN_APP_FEATURE BII を実装すると、ユーザーが特定のアプリ機能を音声で起動できるようになります。

業種(カテゴリ)に特有のユースケースに対応した BII も多数あります。たとえば、エクササイズ アプリでは actions.intent.START_EXERCISE BII を使用できます。

優れたユーザー エクスペリエンスを実現し、速やかに承認を受けるためには、実装する個々の BII がアプリ内機能と密接に関連していることを確認します。

App Actions は、アシスタント アプリから Android インテントを起動して、アプリ内の特定のコンテンツにユーザーを直接誘導します。こうしたインテントを定義して明示的にアクティビティを起動するには、targetClass フィールドと targetPackage フィールドを指定します。Android ディープリンク URL をすでにアプリに実装している場合は、フルフィルメントにディープリンクを使用するようにインテントを構成できます。詳しくは、アクティビティのディープリンクをテストするをご覧ください。

組み込みインテントのフルフィルメントの詳細を指定する

App Action の開発の大部分は、Android アプリの shortcuts.xml リソース ファイルでケーパビリティを宣言し、選択した BII とそれらに対応するフルフィルメントを指定する作業です。BII は、タスクのユーザークエリをモデル化したものです。フルフィルメント インテントは、タスクの実行方法に関する情報をアシスタントに提供します。

shortcuts.xml ファイルでは、BII は <capability> 要素で表され、個々のフルフィルメントは <intent> 要素で表されます。

<shortcuts>
    <capability android:name="actions.intent.START_EXERCISE">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.example.app"
            android:targetClass="com.example.app.browse">
            <parameter
                android:name="exercise.name"
                android:key="exercise_name">
            </parameter>
        </intent>
    </capability>

ほとんどの BII では、schema.org エンティティに基づいてユーザークエリからインテント パラメータを抽出します。アプリは、それらの BII パラメータを使用して、選択したケーパビリティにユーザーを誘導します。たとえば、上記のコードは、exercise.name BII パラメータを Android intent パラメータの exercise_name にマッピングしています。

ディープリンクを使用してアクションを遂行する場合は、urlTemplate フィールドを使用して、アシスタントが生成するディープリンク URL を定義します。

<shortcuts>
    <capability android:name="actions.intent.START_EXERCISE">
        <intent android:action="android.intent.action.VIEW">
            <url-template android:value="myexerciseapp://start{?exercise_name}" />
            <parameter android:name="exercise.name"
                android:key="exercise_name"
                android:mimeType="text/*">
            </parameter>
        </intent>
    </capability>
</shortcuts>

App Actions を shortcuts.xml ファイルに追加する方法については、shortcuts.xml を作成するをご覧ください。このページには、アプリが想定するパラメータ値を指定する方法も記載されています。

GET_THING 組み込みインテントを実装する

アプリに検索機能が含まれている場合は、その機能に対応する actions.intent.GET_THING BII を実装する必要があります。アシスタントは、ユーザーが「OK Google, ExampleApp で Example Thing を検索して」のようなクエリを実行したときに、アプリの検索機能で取得されたアプリ内の結果にユーザーを誘導できます。

shortcuts.xml ファイルで、actions.intent.GET_THING BII に対応する <capability> を実装します。この手順は、他の BII を実装する場合と同様です。アプリの検索機能にユーザークエリを渡すフルフィルメントを少なくとも 1 つ指定すれば、GET_THING に対して複数のフルフィルメントを使用できます。

shortcuts.xmlactions.intent.GET_THING BII を追加する例を次に示します。

  <capability android:name="actions.intent.GET_THING">
    <intent
      android:targetPackage="com.example.myapp"
      android:targetClass="com.example.myapp.MySearchActivity">
      <parameter android:name="thing.name" android:key="query" />
    </intent>
  </capability>

検索 Activity で、intent のエクストラ データから検索クエリを抽出して、アプリの検索機能に渡します。上記のコードでは、検索クエリ(query キーとして渡されます)が "thing.name" BII パラメータにマッピングされています。次に、クエリを使用して検索を実行し、その結果をユーザー インターフェースに表示します。

省略可: App Action のショートカットをアシスタントにプッシュする

アクションのケーパビリティを定義すると、ユーザーは「OK Google, Example App でピザを注文して」などと話しかけるだけで、アクションを起動できるようになります。アシスタントはアクションに対応する Android ショートカットを適切なタイミングでユーザーに提示できるので、ユーザーは簡単にアクションを見つけてリプレイできます。アシスタントは、動的ショートカットと静的ショートカットの両方を提示できます。

動的ショートカットをアシスタントにプッシュするには、Google Shortcuts Integration Library を使用します。この Jetpack ライブラリを使用すると、アシスタントがショートカットを取り込み、適切なタイミングでユーザーに提示できるようになります。

詳しくは、アシスタントに動的ショートカットをプッシュするをご覧ください。

App Actions をプレビューする

開発時とテスト時は、Android Studio 用の Google アシスタント プラグインを使用して、アプリで App Actions が機能するかどうかをテストします。このプラグインは、アシスタントに App Actions のプレビュー(自分の Google アカウント用)を作成します。このテストツールを使用すると、ユーザーから受け取ることを想定している入力パラメータを BII に提供して、物理テストデバイスまたはエミュレータでフルフィルメントをテストできます。

App Actions をプレビューする際、デバイスで音声によるクエリをトリガーすることもできます。この機能は、App Actions の BII リファレンスに記載されているクエリでのみ利用できます。音声トリガーは、通常のテストでは使用せず、デモ目的にのみ使用してください。

審査のためにアプリを送信する前に、Google Play Console のデベロッパー ツールを使用してドラフトモードでアプリをテストします。Google Play Console を使用してアプリのドラフト版をデプロイする方法については、リリースの準備と公開をご覧ください。

テストリリースを作成する

テスターを追加して App Actions をテストする準備ができたら、アプリの内部テストまたはクローズド テスト用のテストリリースを作成します。デフォルトでは、内部テストリリースとクローズド テストリリースのテスターは、審査と承認が完了している App Actions にアクセスできます。

未承認のアクションを含むすべての App Actions へのテストアクセス権を付与するには、App Actions Development Program Google グループに参加するようテスターに指示します。このグループのメンバーは、App Actions テストツールを使用してプレビューを作成しなくても、クローズド テストリリースと内部テストリリースのすべての App Actions にアクセスできます。グループに参加してからアクセスが可能になるまで、最大で 3 時間ほどかかる場合があります。

App Actions の審査とデプロイをリクエストする

公開済みのアプリまたはオープンテスト リリースのユーザーは、審査と承認が完了するまで App Actions にアクセスできません。App Actions の審査は、Android アプリの審査と Google Play のデプロイ ステータスには影響しません。提出したアプリが承認されて Play ストアで公開されても、shortcuts.xml はまだ Google によって審査中という場合もあります。審査で承認されるまで、App Actions はエンドユーザーに対して機能しません。

アプリをデプロイするとき、App Actions は有効なままになります。ただし、再デプロイしたバージョンは Google による審査の対象となります。新しいバージョンが正常に機能しない場合、またはポリシー違反が含まれている場合、Google は、アプリの App Actions を無効にする権限を有します。

審査のために App Actions を提出する手順は次のとおりです。

  1. Google Play Console で App Actions 利用規約に同意します([詳細設定] > [App Actions])。

    Google Play Console 内の App Actions 利用規約

  2. 通常どおり、Google Play Console に、shortcuts.xml を含むアプリをアップロードします。

  3. Google Play Console にアプリをアップロードすると、Google Play Console アカウントのメールで、App Actions の詳しい審査状況に関する連絡が Google から届きます。App Actions の審査状況についてご不明な点がある場合は、アシスタント デベロッパー サポートにお問い合わせください。問い合わせフォームにアプリ パッケージ ID を入力し、[お問い合わせの詳細をお知らせください。] 選択ボックスで [App Action の審査] を選択します。

ディープリンクを使用して App Actions で Activity を起動するには、Activity をディープリンク URL でセットアップし、Android アプリ マニフェストで対応するインテント フィルタを設定する必要があります。

アクティビティがアクセス可能か、および App Actions を使用してトリガーできるかをテストするには、次の adb コマンドを実行します。

$ adb shell am start -a android.intent.action.VIEW -d "AppLinksURL"

例:

$ adb shell am start -a android.intent.action.VIEW -d "https://www.example.com/deeplink"

adb コマンドでアクティビティが正常に起動されない場合は、次の点を確認してください。

  • Google アシスタントからインテントを使用してアクティビティを起動できるように、アプリ マニフェスト ファイルでアクティビティに android:exported=true が指定されている。
  • アプリリンク URL を使用している場合、Android アプリリンクの処理に記載されている手順をすべて実施している。

App Actions のポリシー

アプリアクションをトリガーしたユーザーに意図したエクスペリエンスを提供するため、アプリアクションは特定のポリシーに準拠する必要があります。最適なユーザー エクスペリエンスを提供して、Google Play ストアの審査の遅延や不承認を回避するため、アプリを送信する前にこれらのポリシーを確認してください。

  • ユーザーが意図したコンテンツにユーザーを誘導する

    App Actions の組み込みインテント(BII)やパラメータは、ユーザーが意図した関連するアクションにのみユーザーを誘導する必要があります。これには、アプリ内コンテンツ、ウェブサイト コンテンツ、スライスやウィジェットに表示される情報など、ユーザーが意図したエクスペリエンスが含まれます。

    たとえば、BII「START_EXERCISE」の実装により、ユーザーはランニングや水泳など、特定の種類のエクササイズを開始できます。このポリシーの唯一の例外は、OPEN_APP_FEATURE BII がユーザーをアプリのホーム画面に誘導する場合です。

  • 関連する App Actions BII を実装する

    実装された BII は、アプリのコンテンツと機能に直接関連している必要があります。

    たとえば、アプリが Google Play ストアのコミュニケーション カテゴリに属している場合は、START_EXERCISE BII を実装しないでください。この BII は、健康とフィットネス カテゴリのアプリに推奨されます。

  • 関連するカスタム インテントを実装する

    カスタム インテントの定義済みクエリは、アプリのコンテンツと機能に関連しています。このポリシーに違反している可能性のある例として、Play ストアの「交通」カテゴリに属するアプリに、関連するクエリパターン「Show me burrito recipes」を含むインテント custom.action.intent.GET_RECIPE を作成することが考えられます。