App Actions を作成すると、ユーザーは Google アシスタントにリクエストするか、またはアシスタントが提示する Android ショートカットを使用して、Android アプリで機能を起動できるようになります。App Actions で Android アプリを拡張する基本的な手順は次のとおりです。
- トリガーするアプリ内機能と、それに対応する組み込みインテント(BII)を特定します。
- BII のフルフィルメントの詳細を指定します。
- App Action のショートカットをアシスタントにプッシュします。
- テストデバイスで App Actions をプレビューします。
- アプリのテストリリースを作成します。
- 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 をテストするには、物理デバイスまたは仮想デバイスが必要です。
- 最新バージョンの 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 の中には、業種固有のユースケース、すなわちカテゴリ固有のユースケースを可能にする 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 パラメータが exercise_name
Android intent
パラメータにマッピングされています。
ディープリンクを使用してアクションを遂行する場合は、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, Example App で Example Thing を検索して」のようなクエリを行うと、アプリ内結果をアプリの検索機能に転送できます。
他の BII を実装する場合と同様に、shortcuts.xml
ファイルで actions.intent.GET_THING
BII の <capability>
を実装します。アプリの検索機能にユーザークエリを渡すフルフィルメントを少なくとも 1 つ指定すれば、GET_THING
に対して複数のフルフィルメントを使用できます。
shortcuts.xml
に actions.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 が機能するかどうかをテストします。このプラグインは、お使いの Google アカウントの Google アシスタントで App Actions のプレビューを作成します。このテストツールを使用すると、ユーザーから受け取ることを想定している入力パラメータを 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 を提出する手順は次のとおりです。
Google Play Console で App Actions 利用規約に同意します([詳細設定] > [App Actions])。
shortcuts.xml
を含むアプリを通常どおり Google Play Console にアップロードして、公開します。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 のポリシー
アプリアクションをトリガーしたユーザーに意図したエクスペリエンスを提供するには、アプリアクションが特定のポリシーに準拠している必要があります。アプリを送信する前にこれらのポリシーを確認して、最適なユーザー エクスペリエンスを提供し、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
を作成することが考えられます。