iOSおよびAndroidのApp Linkファイルを正しく配信する方法

iOSのユニバーサルリンク用の`apple-app-site-association`ファイルと、Androidのアプリリンク用の`assetlinks.json`ファイルを正しくホストし、配信する方法について説明します。

Intermediate

iOSおよびAndroidのApp Linkファイルを正しく配信するには、ウェブサイトとモバイルアプリケーションの両方を設定する必要があります。これには、Webサーバー上で特定のファイルを作成してホストし、iOSおよびAndroidのプロジェクト内で対応する設定を行うことが含まれます。

iOSユニバーサルリンク

iOSの場合、ユニバーサルリンクを設定する必要があります。これにより、ユーザーはウェブサイト上のリンクをタップするだけで、インストール済みのアプリにシームレスにリダイレクトされます。

  1. apple-app-site-associationファイルを作成します:

    • 次のような名前のJSONファイルを作成します apple-app-site-association (拡張子なし) .json )を作成します。
    • このファイルは、アプリが処理できるURLを宣言するものです。
    • このファイルには applinks 辞書を含める必要があります。その内部には applinks、空の apps 配列と details 配列を含めてください。配列内の各オブジェクトは、 details 配列内の各オブジェクトには、 appID (Apple Team ID の後にアプリのバンドル識別子を続けたもの)と、 paths を指定する必要があります。ワイルドカード(* および ?)を使用できます。
    • apple-app-site-associationの内容例: json { "applinks": { "apps": [], "details": [ { "appID": "YOUR_TEAM_ID.com.yourcompany.yourapp", "paths": [ "/path/to/content/*", "/another/path/*", "NOT /path/to/exclude" ] } ] } }
  2. Webサーバーにファイルをホストする:

    • この apple-app-site-association ファイルは、ドメインのルートディレクトリ、または .well-known サブディレクトリ(例: https://yourdomain.com/apple-app-site-association または https://yourdomain.com/.well-known/apple-app-site-association).
    • 有効なSSL証明書を使用してHTTPS経由で配信する必要があります
    • ファイルには、HTTPリダイレクト(301または302)を介さずに直接アクセスできる必要があります
    • ファイルの MIME タイプは application/json.
    • 圧縮されていないファイルサイズは 128 KB を超えてはなりません。
    • 複数のドメインまたはサブドメインをサポートしている場合、各ドメインには独自の apple-app-site-association ファイルが必要です。
  3. iOS アプリの設定:

    • Xcode で、プロジェクトの「Associated Domains」機能を有効にしてください。
    • アプリがサポートするドメインを、「Associated Domains」リストに、接頭辞として applinks: (例: applinks:yourdomain.com).
    • アプリの AppDelegate または SceneDelegate に実装します。

Android App Links

Android の場合、App Links も同様にシームレスな体験を提供し、検証済みのリンクを曖昧性解消ダイアログを表示することなくアプリ内で直接開くことができます。

  1. assetlinks.jsonファイルを作成します:

    • 次のような名前の JSON ファイルを作成します: assetlinks.json.
    • このファイルは、ウェブサイトとAndroidアプリ間の信頼関係を確立します。
    • このファイルには、 relation (例: delegate_permission/common.handle_all_urls), target (以下を含む namespace として android_app、アプリの package_name、および sha256_cert_fingerprints アプリの署名証明書の)。
    • SHA256フィンガープリントは、 keytool コマンド、またはPlay App Signingを使用している場合はGoogle Playコンソールから取得できます。
    • assetlinks.json コンテンツの例: json [{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.yourcompany.yourapp", "sha256_cert_fingerprints": ["AA:BB:CC:DD:EE:FF:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99:00:AA:BB:CC:DD:EE:FF"] } }]
  2. ファイルをWebサーバーにホストします:

    • この assetlinks.json ファイルは https://yourdomain.com/.well-known/assetlinks.json.
    • 有効な SSL 証明書を使用して HTTPS 経由で配信する必要があります
    • ファイルには、HTTPリダイレクト(301または302)を経由せずに直接アクセスできる必要があります
    • ファイルのMIMEタイプは application/json.
    • アプリが複数のホストドメインをサポートしている場合、各ドメインで assetlinks.json ファイルを各ドメインに公開する必要があります。
  3. Androidアプリの設定:

    • アプリに <intent-filter> アプリ内の AndroidManifest.xml に、処理したいURL用のを追加します。
    • android:autoVerify="true"<intent-filter>に含めてください。これにより、Androidにホストドメインの検証が行われます。
    • . <intent-filter> には ACTION_VIEW, BROWSABLEを含め、 DEFAULT カテゴリを含める必要があります。
    • スキームを指定します <data> スキーム(例: https)、ホスト、および任意のパスプレフィックスやパターンを指定します。
    • AndroidManifest.xmlintent-filter: xml <activity android:name=".MainActivity"> <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="yourdomain.com" android:pathPrefix="/path/to/content" /> </intent-filter> </activity>
    • 受信した Intent を処理し、URL からデータを抽出して適切なコンテンツに移動します。

一般的なベストプラクティス

  • iOS ユニバーサルリンクと Android アプリリンクの両方で、HTTPS は必須です
  • これらの関連付けファイルを提供する際は、リダイレクトを避けてください
  • 実際のデバイスで徹底的にテストし、検証ツール(例:Android 用の Google Digital Asset Links API、iOS AASA ファイル用の各種オンライン検証ツール)を使用して、設定が正しいことを確認してください。
  • アプリリンクを設定するドメイン所有権を確実に確保してください。