うさがにっき

読書感想文とプログラムのこと書いてきます

App Linksを使って優先的に自分のアプリを開く方法

概要

Android Mから導入されたURLから特定のアプリを優先的に開く方法をまとめる

詳細

従来のAndroidではURLを開く時、そのURLをフックしてアプリを起動した際、ブラウザで開くかアプリで開くかを選択するダイアログが表示された
これをAndroid MからはURLを開く際に優先的に開くアプリを設定できる

App Linksの制限

基本的にサイトを運営しているサービス提供者しか宣言できない仕組みになっている
フックしたいURLと同じドメインに設定ファイルを置く必要があるため

App Links対応方法

http://usaganikki.jpというURLをフックして起動するようにアプリを設定してみる

アプリ側

AndroidManifestの変更

  • 対応するintent-filterにautoVerifyを追加
<activity ...>

    <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" android:host="usaganikki.jp" />
    </intent-filter>

</activity>

サーバ側

statement.jsonの設定
以下のパスにアプリの設定を記述したstatemenet.jsonを配置する

https://usaganikki.jp/.well-known/assetlinks.json

statement.jsonには以下を記載する

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints":
    ["14:6D:...:3F:CF:44:E5"]
  }
}]

指定する必要があるのは

  • package_name

パッケージ名

  • sha256_cert_fingerprints

アプリの署名鍵

動作確認

アプリをインストールするとstatement.jsonをよみとるアクセスが発生する

事例

facebookがapplinkを自サービスで使えるようにAPIを公開している
Facebook's Mobile Hosting API for App Links - 参考資料 - 開発者向けFacebook