アプリが開かないユニバーサルリンクのデバッグには、体系的なアプローチが必要です。アプリの設定とウェブサーバーの設定の両方を確認します。包括的なガイドは以下の通りです:
1. 基本設定とテスト環境の確認
- シミュレータではなく実機を使用: ユニバーサルリンクはシミュレータ上で動作が異なる場合があります。必ず実機のiOSデバイスでテストしてください。
- アプリを削除して再インストール: 変更後は必ずデバイスからアプリを削除し、再インストールしてください。これによりiOSが
apple-app-site-association(AASA) ファイルを再ダウンロードします。 - 適切なソースからのテスト: ユニバーサルリンクはブラウザのURLバーに直接貼り付けても機能しません。メモ、メール、iMessage、Slackなどの他のアプリからリンクをタップしてテストしてください。Instagram、Twitter、Facebookなどの一部のアプリはユニバーサルリンクを直接サポートしていない場合があります。
2. apple-app-site-association (AASA) ファイルの確認
AASAファイルはユニバーサルリンクに不可欠です。iOSはこのファイルをウェブサーバーからダウンロードし、アプリが処理可能なリンクを判断します。
- ファイルの場所: AASAファイルは必ず
https://yourdomain.com/apple-app-site-associationまたはhttps://yourdomain.com/.well-known/apple-app-site-associationにホストする必要があります。 - HTTPSおよびリダイレクトなし: ファイルはHTTPS経由で提供され、3xxリダイレクトが発生しない必要があります。
- Content-Typeヘッダー: サーバーがAASAファイルに対して正しい
Content-Typeヘッダーを返すことを確認してください。 - JSONの有効性: AASAファイルは有効なJSONであり、指定されたスキーマに準拠している必要があります。オンラインバリデータ(Branch.ioのAASAバリデータなど)を使用して正しさを確認できます。
appIDとパス: AASAファイル内のappIDが、アプリのチームIDおよびバンドル識別子(例:ABC123DEF.com.example.app)と一致していることを確認してください。 また、paths配列がアプリが処理すべきURLパスを正しく指定していることを確認してください。- サーバーログ: アプリインストール時にAASAファイルがiOSによってダウンロードされていることを確認するため、WebサーバーのHTTPSログを確認してください。
3. Xcode でのアプリ設定
- 関連ドメイン権限: Xcode プロジェクトの「署名と機能」タブで「関連ドメイン」が有効になっていることを確認してください。ドメインは
applinks:yourdomain.comの形式で追加します。 - デバッグ版とリリース版: 開発中にデバッグする場合は、「署名と機能」のデバッグ版を編集していることを確認してください。開発中にAppleユニバーサルリンクCDNをバイパスするには、デバッグドメインを
applinks:yourdomain.com?mode=developerのように設定します。 - App Delegate/Scene Delegate: アプリの
AppDelegate(またはiOS 13+の場合はSceneDelegate)が、ユニバーサルリンク用の受信NSUserActivityオブジェクトを処理するため、application(_:continueUserActivity:restorationHandler:)メソッドを正しく実装していることを確認してください。
4. デバイス固有のデバッグ
- コンソールログ: デバイスを Xcode に接続し、コンソールを開きます([ウィンドウ] > [デバイスとシミュレータ] > [お使いのデバイス] > [コンソールを開く])。 ログを「swcd」(共有 Web 認証情報デーモン)でフィルタリングし、ユニバーサルリンクの登録が成功したか失敗したかを確認します。
- 開発者設定(iOS 13 以降):
- 設定 > プライバシーとセキュリティ > 開発者モードで「開発者モード」を有効にします。
- 設定>開発者>ユニバーサルリンクで「関連ドメインの開発」を有効にする。
- ユニバーサルリンクセクションの「診断」ツールを使用し、ユニバーサルリンクURLを入力して、インストール済みアプリで有効か確認する。
- デバイスの再起動: デバイスを再起動すると、iOSユニバーサルリンクのキャッシュがクリアされ、問題が解決する場合があります。
- 異なるデバイス/iOSバージョンでのテスト: デバイス固有の設定問題を排除するのに役立ちます。
- ユニバーサルリンクの再有効化: 以前にSafariでユニバーサルリンクが開いた場合、その特定のリンクに対して無効化されている可能性があります。 メモなどのアプリでリンクを長押しし、「[アプリ名]で開く」を選択して再有効化してください。Safariでスマートアプリバナーが表示された場合、バナー内の「開く」をタップしてもユニバーサルリンクを再有効化できます。
5. 詳細なトラブルシューティング
sysdiagnoseログ: 詳細な分析には、iOS デバイス上のsysdiagnoseログ(設定 > プライバシーとセキュリティ > 分析と改善 > 分析データ)を参照できます。これらのログは、iOS がユニバーサルリンクをどのように処理しているかについての詳細情報を提供します。- サードパーティ製ツール: AppleのApp Search API検証ツールやその他のサードパーティ製検証ツールを活用し、ウェブサイトの設定を確認してください。
これらの手順を体系的に実行することで、ユニバーサルリンクがアプリを開けない原因となるほとんどの問題を特定・解決できます。