Universal Links と App Links のバリデーター
apple-app-site-association または assetlinks.json を貼り付けて、Apple や Google より先に問題を見つけましょう。
公開前のチェック
- リンクで使うすべてのドメインで、/.well-known/ に HTTPS でリダイレクトなしに配置する。
- application/json で配信する(apple-app-site-association は .json 拡張子なし)。
- 実際にインストールされるビルドの署名証明書を使う。Google Play App Signing には独自の証明書がある。
- ファイルを変更したらアプリを再インストールする。端末はファイルをキャッシュする。
仕組み
- ファイルはブラウザ内で検証されます。構造、アプリ ID、パス、証明書のフィンガープリントを確認します。
- ブラウザは他サイトのファイルを取得できないため、URL ではなく内容を貼り付けてください。
- 正しいファイルは作業の半分です。残りの半分は下のチェックリストで確認できます。
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 やインテントフィルタに正確なホストが記載されているかも確認しましょう。
ほかの無料ツール
- App Store と Google Play の QR コード作成
- App Store と Google Play のリンク作成
- スマートリンクのリダイレクトテスト
- apple-app-site-association と assetlinks.json の生成ツール
すべてのストアにひとつのリンクと QR コード
SetLinks は訪問者をそれぞれのストアへ送り、すべてのクリックを集計します。無料で始められます。
スマートリンクを作成