メインコンテンツまでスキップ

Android App Links

Android App Linksは、Androidが標準機能として提供しているディープリンクです。

Android App Linksとして登録するURLは以下のようなHTTP URLであるため、1つのURLでアプリとウェブサイトの両方に対応できます。

https://example.com/account/profile

また、後述するアプリとドメインの関連付けにより、このアプリが提供するAndroid App Linksを他のアプリに乗っ取られるようなリスクはありません。

Android App Linksの処理概要

Android App Linksの登録

  1. ユーザは、アプリをインストールする
  2. OSは、アプリとドメインの関連付けを検証して登録する

Android App Linksの処理

  1. ユーザは、ディープリンクURLをタップする
  2. OSは、タップされたディープリンクを処理する
  3. OSは、ディープリンクURLがAndroid App Linksとして登録されているかを判断する
    • 登録されている場合、OSはアプリを開く
    • 登録されていない場合、OSはブラウザでディープリンクURLを開く
  4. アプリは、起動時のディープリンクURLを受け取るので、そのURLに応じた処理をする

アプリとドメインの関連付け

Android App Linksは、アプリとドメインを関連付けることでディープリンクURLの安全を保証します。

アプリとドメインの関連付けは、アプリリンクの検証をリクエストするに記載されている通り、以下の設定が必要です。

  • AndroidManifest.xmlにAndroid App Linksの検証を有効にするintent-filterを定義
  • Digital Asset Linksファイルをウェブサイトに配置

AndroidManifest.xmlにAndroid App Linksの検証を有効にするintent-filterを定義

Android App Linksの検証を有効にするには、AndroidManifest.xmlintent-filterandroid:autoVerify="true"を定義します。

intent-filter内に以下の要素が存在する場合、OSはアプリインストール時に指定されたドメインのDigital Asset Linksファイルを確認し、アプリとドメインの関連付けを検証します。

  • action: android.intent.action.VIEW
  • category: android.intent.category.BROWSABLE
  • category: android.intent.category.DEFAULT
  • data scheme: httpまたはhttps
AndroidManifest.xmlの例
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- ~省略~ -->
<application
android:name=".MainApplication"
<!-- ~省略~ -->
>
<activity
android:name=".MainActivity"
<!-- ~省略~ -->
>
<!-- ~省略~ -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"/>
<data android:host="[ドメイン]"/>
<data android:path="/account/profile" />
<data android:pathAdvancedPattern="/questions?page=.+" />
</intent-filter>
</activity>
</application>
</manifest>

dataにはpathpathPrefixpath[Advanced]Patternなどを指定することで、特定のパスのみを対象にできます。 詳細は、以下を参照してください。

Digital Asset Linksファイルをウェブサイトに配置

Digital Asset Linksファイルは、アプリと関連付けるドメインに配置するファイルです。ファイル名はassetlinks.jsonとし、JSON形式で記述します。

このファイルには、関連付けるアプリのアプリケーションIDとアプリの署名証明書のSHA256フィンガープリントなどを指定します。

詳細は、以下のドキュメントを参照してください。

assetlinks.jsonの例
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example.app",
"sha256_cert_fingerprints": ["FA:C6:17:45:DC:09:03:78:6F:B9:ED:E6:2A:96:2B:39:9F:73:48:F0:BB:6F:89:9B:83:32:66:75:91:03:3B:9C"]
}
}]
注記

アプリの署名証明書のSHA256フィンガープリントはJava Keytoolを使用することで生成できます。

release.keystoreからSHA256フィンガープリントを生成
keytool -list -v -keystore release.keystore
注記

1つのドメインを複数のアプリと関連付けることも可能です。詳細は以下を参照してください。

Digital Asset Linksファイルは、ウェブサイトの.well-knownディレクトリに配置します。

https://[ドメイン]/.well-known/assetlinks.json

また、以下の要件を満たして配信する必要があります。

  • Content-Typeapplication/jsonである
  • HTTPS接続でアクセスできる
  • リダイレクトなしでアクセスできる(301リダイレクトや302リダイレクトがない)
  • botがアクセスできる(robots.txt/.well-known/assetlinks.jsonのクロールが禁止されていない)
  • 複数のホストドメインをサポートしている場合、各ドメインでDigital Asset Linksファイルを公開する必要がある(詳細は、複数のホスト用のアプリリンク機能をサポートするを参照)