Universal Links と App Links のバリデーター

apple-app-site-association または assetlinks.json を貼り付けて、Apple や Google より先に問題を見つけましょう。

公開前のチェック

ファイルがまだない場合は生成する →

仕組み

Universal Links がアプリではなく Safari で開く理由

iOS は apple-app-site-association を、リンクがタップされたときではなく、アプリのインストール時に Apple の CDN 経由でダウンロードします。その時点でファイルがない、リダイレクトされている、形式が壊れているといった状態だと、アプリを再インストールするかキャッシュが更新されるまで、リンクは Safari で開きます。

よくある原因は次のとおりです。appIDs のエントリがバンドル ID の前に 10 文字の Team ID を付けていない。paths や components がリンクと一致しない。ファイルがリダイレクト付きで、または間違ったホスト(www と素のドメイン)で配信されている。アプリの Associated Domains エンタイトルメントに「applinks:」と正確なホストの組み合わせがない。

もうひとつ。今開いているページと同じドメインのリンクをタップした場合は、仕様上 Safari のままです。メモ、メッセージ、別のサイトからテストしてください。

Android App Links がブラウザで開く理由

Android は、android:autoVerify="true" を指定したインテントフィルタのすべてのホストについて assetlinks.json を検証します。どれかひとつでも検証に失敗すると、どのリンクも自動ではアプリを開きません。

失敗の多くはフィンガープリントが原因です。ファイルにはデバッグ鍵やアップロード鍵が記載されているのに、ユーザーがインストールするのは Google Play App Signing で署名されたビルド、というケースです。Play Console の「アプリの完全性」から SHA-256 をコピーし、ユーザーがインストールするビルドに署名するすべての鍵を記載してください。

Android 12 以降では、adb shell pm get-app-links の後にパッケージ名を続けて状態を確認でき、ファイルを修正した後に検証を再実行できます。

よくある質問

apple-app-site-association はどこに配置する必要がありますか?

https://your-domain/.well-known/apple-app-site-association に、HTTPS で、リダイレクトなしに、application/json として、.json 拡張子なしで配置します。

assetlinks.json はどこに配置する必要がありますか?

https://your-domain/.well-known/assetlinks.json に、HTTPS で、リダイレクトなしに、application/json として配置します。

URL で検証できないのはなぜですか?

ブラウザは、相手のサイトが許可しない限り、ページが他サイトのファイルを読むことを認めません。これらのファイルはたいてい許可されていません。URL を開いて内容をコピーし、ここに貼り付けてください。

どの SHA-256 フィンガープリントが必要ですか?

ユーザーがインストールするビルドに署名する証明書のものです。Google Play App Signing を使っている場合は、アップロード鍵ではなく Play Console に表示されるアプリ署名鍵です。自分の鍵で署名したビルドも配布しているなら、両方を追加してください。

ファイルを修正したのに、まだリンクがブラウザで開きます。なぜですか?

端末が結果をキャッシュしているためです。iOS ではアプリを再インストールし、Android では検証を再実行するか再インストールしてください。アプリの Associated Domains やインテントフィルタに正確なホストが記載されているかも確認しましょう。

ほかの無料ツール

すべてのストアにひとつのリンクと QR コード

SetLinks は訪問者をそれぞれのストアへ送り、すべてのクリックを集計します。無料で始められます。

スマートリンクを作成