Android アプリリンクは、ユーザーを Android アプリの特定のコンテンツに直接誘導する HTTP URL です。Android アプリリンクはアプリへのトラフィックを増やし、よく使用されているコンテンツを把握するのに役立ちます。ユーザーにとっては、インストールしたアプリ内のコンテンツを共有したり、見つけたりするのが簡単になります。
Android アプリリンクのサポートを追加する方法は次のとおりです。
- マニフェストでインテント フィルタを作成します。
- アプリへのリンクを処理するコードをアプリのアクティビティに追加します。
- デジタル アセット リンクを使ってアプリとウェブサイトを関連付けます。
後述のように、Android Studio 2.3 以降のアプリリンク アシスタントでは、ステップバイステップ方式のウィザードを使用してこのプロセスを簡単に実行できます。
アプリリンクの仕組みとメリットについては、Android アプリリンクの処理をご覧ください。
インテント フィルタを追加する
Android Studio のアプリリンク アシスタントを使用すると、マニフェスト内にインテント フィルタを作成し、ウェブサイトの既存の URL をアプリのアクティビティにマッピングできます。また、インテントを処理するために、対応する各アクティビティにテンプレートの Java コードを追加することもできます。
インテント フィルタと URL の処理を追加する方法は次のとおりです。
- [Tools] > [App Links Assistant] を選択します。
- [Open URL Mapping Editor] をクリックし、[URL Mapping] リストの下部にある [Add]
をクリックして、新しい URL マッピングを追加します。
- 新しい URL マッピングの詳細を追加します。
図 1. サイトのリンク構造に関する基本情報を追加して、URL をアプリのアクティビティにマッピングします。
- [Host] フィールドにウェブサイトの URL を入力します。
- マッピングする URL の path、pathPrefix、または pathPattern を追加します。たとえば、レシピ共有アプリで、すべてのレシピを同じアクティビティで提供しており、対応するウェブサイトのレシピがすべて同じ /recipe ディレクトリ内にある場合は、pathPrefix を指定して「/recipe」と入力します。そうすると、http://www.recipe-app.com/recipe/grilled-potato-salad という URL は、次の手順で選択するアクティビティにマッピングされます。
- [Activity] で、URL によるユーザーの誘導先となるアクティビティを選択します。
- [OK] をクリックします。
- アプリリンク アシスタントは、URL マッピングに基づいてインテント フィルタを
AndroidManifest.xml
ファイルに追加し、[Preview] フィールドでハイライト表示します。変更を加える場合は、[Open AndroidManifest.xml] をクリックして、インテント フィルタを編集します(詳細については、Android のインテント フィルタに関する説明をご覧ください)。注: アプリを更新せずに別のリンクをサポートするには、今後追加する予定の URL に対応する URL マッピングを定義する必要があります。また、検索結果に表示されるように、アプリのホーム画面の URL も必ず含めてください。
- URL マッピングが適切に機能するかどうか確認するには、[Check URL Mapping] フィールドに URL を入力し、[Check Mapping] をクリックします。適切に機能する場合は、入力した URL が選択したアクティビティにマッピングされていることを示す成功メッセージが表示されます。
アプリへのリンクを処理する
URL マッピングが適切に機能することを確認したら、作成したインテントを処理するロジックを追加します。
- アプリリンク アシスタントで [Select Activity] をクリックします。
- リストからアクティビティを選択し、[Insert Code] をクリックします。
アプリリンク アシスタントにより、アクティビティの Java ファイルに次のようなコードが追加されます(注: 現在、アプリリンク アシスタントは Kotlin をサポートしていないため、このコードを手動で追加する必要があります)。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val appLinkIntent = intent val appLinkAction = appLinkIntent.action val appLinkData = appLinkIntent.data }
Java
// ATTENTION: This was auto-generated to handle app links. Intent appLinkIntent = getIntent(); String appLinkAction = appLinkIntent.getAction(); Uri appLinkData = appLinkIntent.getData();
ただし、このコードはそのままでは不十分です。appLinkData
の URI に基づいて、対応するコンテンツを表示するなどの処理を行う必要があります。たとえば、レシピ共有アプリの場合は、次のサンプルのようなコードになります。
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ... handleIntent(intent) } override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) handleIntent(intent) } private fun handleIntent(intent: Intent) { val appLinkAction = intent.action val appLinkData: Uri? = intent.data if (Intent.ACTION_VIEW == appLinkAction) { appLinkData?.lastPathSegment?.also { recipeId -> Uri.parse("content://com.recipe_app/recipe/") .buildUpon() .appendPath(recipeId) .build().also { appData -> showRecipe(appData) } } } }
Java
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... handleIntent(getIntent()); } protected void onNewIntent(Intent intent) { super.onNewIntent(intent); handleIntent(intent); } private void handleIntent(Intent intent) { String appLinkAction = intent.getAction(); Uri appLinkData = intent.getData(); if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){ String recipeId = appLinkData.getLastPathSegment(); Uri appData = Uri.parse("content://com.recipe_app/recipe/").buildUpon() .appendPath(recipeId).build(); showRecipe(appData); } }
アプリをウェブサイトに関連付ける
アプリに対する URL のサポートを設定すると、アプリリンク アシスタントによりデジタル アセット リンク ファイルが生成されます。このファイルを使ってウェブサイトをアプリに関連付けることができます。
デジタル アセット リンク ファイルを使用する代わりに、Search Console でアプリをサイトに関連付けることもできます。
アプリリンク アシスタントを使ってアプリとウェブサイトを関連付けるには、アプリリンク アシスタントで [Open Digital Asset Links File Generator] をクリックして、次の手順を実施します。

図 2. サイトとアプリに関する詳細を入力し、デジタル アセット リンク ファイルを生成します。
- サイトのドメインとアプリケーション ID を入力します。
- デジタル アセット リンク ファイルに Smart Lock for Passwords のサポートを含めるには、[Support sharing credentials between the app and the website] を選択して、サイトのログイン URL を入力します。これにより、デジタル アセット リンク ファイルに
delegate_permission/common.get_login_creds
という文字列が追加され、アプリとウェブサイトでログイン認証情報が共有されることが宣言されます。アプリで Smart Lock for Passwords をサポートする方法をご確認ください。 - 署名設定を指定するか、キーストア ファイルを選択します。アプリのリリースビルドまたはデバッグビルド用に、正しい署名設定またはキーストア ファイルを選択してください。製品版ビルドを設定する場合は、リリース設定を使用します。ビルドをテストする場合は、デバッグ設定を使用します。
- [Generate Digital Asset Links file] をクリックします。
- Android Studio によってファイルが生成されたら、[Save file] をクリックしてファイルをダウンロードします。
assetlinks.json
ファイルをサイト(https://<yoursite>/.well-known/assetlinks.json
)にアップロードします。その際、すべてのユーザーに読み取りアクセスを許可します。重要: デジタル アセット リンク ファイルは暗号化された HTTPS プロトコルで検証されます。アプリのインテント フィルタに
https
が含まれているかどうかに関係なく、assetlinks.json
ファイルが HTTPS 接続でアクセス可能であることを確認してください。- [Link and Verify] をクリックし、正しいデジタル アセット リンク ファイルを正しい場所にアップロードしたことを確認します。
デジタル アセット リンク ファイルでウェブサイトをアプリと関連付ける方法については、ウェブサイトの関連付けを宣言するをご覧ください。
アプリリンクをテストする
リンクから正しいアクティビティが開かれることを確認する手順は次のとおりです。
- アプリリンク アシスタントで [Test App Links] をクリックします。
- テストする URL を [URL] フィールドに入力します(例: http://recipe-app.com/recipe/grilled-potato-salad)。
- [Run Test] をクリックします。
- URL マッピングが適切に設定されていないか存在しない場合は、[Test App Links] ウィンドウで URL の下にエラー メッセージが表示されます。URL マッピングが存在する場合は、曖昧さ回避のダイアログ(アプリ選択ツール)は表示されず、デバイスまたはエミュレータでアプリが起動して、指定されたアクティビティが開きます。また、[App Link Testing] ウィンドウに成功メッセージが表示されます。アプリを正常に起動できない場合は、Android Studio の [Run] ウィンドウにエラー メッセージが表示されます。

図 3. テスト対象の URL がアプリ内のアクティビティに正常にマッピングされていれば、アプリリンク アシスタントによって成功メッセージが表示され、アプリが開いて指定されたコンテンツが表示されます。
アプリリンク アシスタントで Android アプリリンクをテストするには、Android 6.0(API レベル 23)以上を搭載したデバイスを接続するか、それに代わる仮想デバイスを利用する必要があります。詳細については、デバイスを接続する方法または AVD を作成する方法をご覧ください。
Firebase App Indexing を追加する
Android アプリリンクをアプリに追加した後、Firebase App Indexing のコードをアクティビティに追加して、Google 検索の追加機能(オートコンプリートの候補の提示やアプリ内検索など)でアプリの再エンゲージメントを促すことができます。Firebase App Indexing の詳細については、Firebase App Indexing のドキュメントをご覧ください。
Firebase App Indexing をアプリに追加するには、Android Studio の Firebase Assistant を使用します。[App Indexing] セクションを展開し、表示される手順に沿って操作してください。