【Android】App Links をタップしてもアプリが起動しないときの確認ポイントまとめ

Android アプリで App Links(アプリリンク)を設定したのに、
リンクをタップしてもアプリが起動しないというトラブル、かなりよくあります。

しかもこの問題、
「実装ミス」「サーバー設定」「端末側の状態」など原因が多岐にわたり、
どこから確認すればいいのか分かりにくいのが厄介なところです。

この記事では、
App Links をタップしてもアプリが起動しないときの対処法・確認事項を、
実務で使う順番でまとめます。


スポンサーリンク

まず前提:App Links と Intent Filter の違い

混同されがちですが、まずここを整理しておきます。

  • Intent Filter(通常の deep link)
    → ブラウザ or アプリを選択するダイアログが出る
  • App Links
    → 正しく設定されていれば無条件でアプリが起動

「勝手にアプリが起動しない」場合、
App Links として成立していない可能性が高いです。


確認①:Intent Filter に autoVerify=true が付いているか

App Links として動作させるには、
Intent Filter に autoVerify=”true” が必須です。


<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"
        android:host="example.com"
        android:pathPrefix="/path" />
</intent-filter>

これが無い場合、
ただの Deep Link 扱いになり、App Links は成立しません。


確認②:assetlinks.json が正しく配置されているか

App Links で最もハマりやすいのがここです。

以下の URL に、
assetlinks.json が配置されている必要があります。


Example Domain

よくあるミスは以下です。

  • .well-known の場所が間違っている
  • ファイル名が assetlinks.json になっていない
  • HTTPS ではなく HTTP

確認③:assetlinks.json の中身が正しいか

assetlinks.json の内容が少しでも間違っていると、
自動検証は失敗します。

基本形は以下です。


[
  {
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
      "namespace": "android_app",
      "package_name": "com.example.app",
      "sha256_cert_fingerprints": [
        "AA:BB:CC:DD:..."
      ]
    }
  }
]

特に注意するポイント:

  • package_name が完全一致しているか
  • SHA-256 がリリース証明書のものか
  • 余計なカンマや改行が入っていないか

確認④:デバッグビルドとリリースビルドの違い

実は App Links、
デバッグビルドでは正常に動かないことがあります。

理由としては、

  • assetlinks.json がリリース証明書前提
  • Play ストア経由での検証が必要なケース

「手元では動かないけど、本番では動く」
「逆に QA 端末でだけ動かない」
といった現象が起きやすいポイントです。


確認⑤:端末側で App Links が無効化されていないか

Android では、ユーザーが App Links を無効化できます。

以下の設定を確認してみてください。

  • 設定 > アプリ > 対象アプリ
  • 「対応リンク」「リンクを開く」
  • すべて許可 or 有効になっているか

ここがオフだと、
実装が完璧でもアプリは起動しません。


確認⑥:すでにブラウザに関連付けられていないか

過去に、

  • Chrome で「常にこのアプリで開く」
  • 別アプリにリンクが紐づいている

状態になると、App Links が正しくても挙動が変わることがあります。

adb が使える場合は、以下で確認できます。


adb shell pm get-app-links com.example.app

よくある勘違いポイント

  • Intent Filter があれば App Links だと思っている
  • assetlinks.json を置いただけで動くと思っている
  • デバッグビルドで検証し続けている

App Links は
アプリ・サーバー・端末の3点が揃って初めて成立します。


App Links が動かないときのチェックリスト

  • autoVerify=true が付いているか
  • assetlinks.json の配置パスは正しいか
  • SHA-256 はリリース証明書のものか
  • HTTPS でアクセスできるか
  • 端末設定でリンクが無効化されていないか

まとめ

App Links は一度正しく理解すると、
「どこを見ればいいか」がはっきりします。

逆に言うと、
仕組みを知らないと永遠にハマり続けるポイントでもあります。

「リンクを踏んでもアプリが起動しない」
という問い合わせが来たときのために、
このチェックリストを持っておくとかなり楽になります。

コメント

タイトルとURLをコピーしました