Androidアプリでは特定のドメインやパスのリンクをアプリで開くことができ、それによりアプリにユーザを誘導することができます。
リンクを開く方法は以下の3種類があります。
- Deep Links
- Web Links
- Android App Links
ただし、これはAndroidでアプリを持っているユーザ限定です。ダウンロードしていないユーザに対しては、通常のWebブラウザで表示されます。
そもそもダウンロードからさせたいなどの場合は、Firebase Dynamic Linksなどが役に立つかもしれません。
Deep Links (iOSではCustom URL Scheme)
ユーザをアプリの特定の部分に遷移させる、任意のスキームのURIを指します。
AndroidManifest.xmlにインテントフィルターを追加し、URLとアプリを紐づけることができます。
<activity
android:name=".MyMapActivity"
android:exported="true"
...>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="geo" />
</intent-filter>
</activity>
注意点
ディープリンクは、複数のアプリが同一のスキームを定義することができます。
そのため、開発者の意図しないアプリでURIが開かれる可能性があることに注意してください。
ディープリンクによっては、以下のような起動するアプリを選択するダイアログが表示される場合があります。
Web Links
HTTPおよびHTTPSスキームを使用するディープリンクを指します。
Android12以降では、リンクをクリックしてもWebブラウザでコンテンツが表示されます。
Android11以下の場合は、ディープリンクと同様にアプリが開きます(ダイアログが表示される可能性もあります)。
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:host="myownpersonaldomain.com" />
</intent-filter>
Android12以降で、HTTP URLを開く場合は以下の2つの方法があります。
- App Linksを設定する
- 設定アプリでユーザに関連付けを行ってもらう
Android App Links
Android App Linksは、HTTPおよびHTTPSスキームを利用し、autoVerify属性を含むWebリンクです。
ディープリンクやWebリンクと違い、アプリを選択するダイアログが表示されることはありません。
メリット
- 他のアプリで開かれることがない
- シームレスな遷移を実現することができる
- アプリをインストールしていないユーザに対しても通常のWebページが開く
- Android Instant Appsで利用できる
- Google検索から直接遷移することができる
実装方法
他のリンクと違い、マニュフェストの追加だけでなく検証用のJSONファイルを公開する必要があります。
1. マニフェストの書き方
<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="http" />
<data android:scheme="https" />
<data android:host="myownpersonaldomain.com" />
</intent-filter>
2. JSONファイルの設置
以下のURLに検証用のJSONファイルを設置します。
https://domain.name/.well-known/assetlinks.json
JSONファイルにはアプリのパッケージ名、フィンガープリントなどを記載します。
複数のアプリの関連付けを記述しておくこともできます。
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.example",
"sha256_cert_fingerprints":
["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
}
}]
詳しい書き方は以下を参照してください
https://developer.android.com/training/app-links/verify-android-applinks
参考文献
https://developer.android.com/training/app-links
https://developer.android.com/about/versions/12/web-intent-resolution?hl=ja
https://engineering.mercari.com/blog/entry/20220224-deeplink-for-mercari-shops/
!!注意!!
Androidのドキュメントは英語版を読むことをおすすめします。
日本語版は、翻訳が怪しかったり、そもそも内容が不十分なことが多いです。