Skip to content

ユニバーサルリンクとアプリリンク

Apple ユニバーサルリンクと Android アプリリンクは、Web コンテンツとモバイルアプリ間のシームレスな移行を実現するために考案されたメカニズムです。ユニバーサル・リンクはiOSに特有のものだが、Androidアプリ・リンクはAndroidアプリでも同じ役割を果たす。

ユニバーサルリンクとアプリリンクの仕組み

ユニバーサルリンク (iOS) とアプリリンク (Android) は、Web ページとアプリ内のコンテンツの両方を指す標準的なウェブリンク (http://mydomain.com) です。

ユニバーサルリンクまたはアプリリンクが開かれると、オペレーティングシステムはインストールされているアプリがそのドメインに登録されているかどうかを確認します。アプリが見つかった場合、Webページを読み込むことなくすぐに起動されます。アプリが見つからない場合、Web URLはユーザーのデフォルトのWebブラウザで読み込まれます。これもそれぞれApp StoreまたはGoogle Play Storeにリダイレクトするように設定できます。

簡単に言えば、ユニバーサルリンクはWebサイトが特定のアプリ画面とそのWebページを関連付けることを可能にします。そのため、ユーザーがアプリ画面に対応するWebページへのリンクをクリックすると、アプリが直接開くことができます(アプリが現在インストールされている場合)。

この表は、ユニバーサルリンクと従来のディープリンクの主な違いを概説しています:

ユースケース

ユニバーサルリンクとアプリリンクは、メールキャンペーンで最も一般的に使用されます。メールはデスクトップとモバイルの両方のデバイスから開いてクリックすることができます。

いくつかのチャンネルはこれらのリンクではうまく機能しません。たとえば、プッシュ通知、アプリ内メッセージ、およびコンテンツカードでは、スキームベースのディープリンク (mydomain://) を使用する必要があります。

前提条件

ユニバーサルリンクとアプリリンクを使用するには:

  • あなたのWeb サイトはHTTPS経由でアクセス可能でなければなりません
  • あなたのアプリはApp Store(iOS)またはGoogle Playストア(Android)で利用可能でなければなりません

ユニバーサルリンクとアプリリンクの設定

アプリがユニバーサルリンクまたはアプリリンクをサポートするためには、iOSとAndroidの両方でリンクドメインに特別な権限ファイルをホストする必要があります。このファイルには、どのアプリがそのドメインからのリンクを開封できるか、そしてiOSの場合、これらのアプリが開封できるパスが定義されています。

  • iOS:Apple App Site Association(AASA)ファイル
  • Android :デジタル資産リンクファイル

この権限ファイルに加えて、アプリ内で設定されているアプリが開封できるリンクドメインのハードコーディングされた定義があります。

  • iOS:Xcodeで「関連ドメイン」として設定
  • Android :アプリのAndroidManifest.xmlファイルで定義されています

この2つの部分からなるドメイン-アプリの関連付けは、ユニバーサルリンクまたはアプリリンクが機能するために必要であり、特定のドメインからのリンクを任意のアプリがハイジャックしたり、特定のアプリを任意のドメインが開いたりするのを防ぎます。

これらの手順は、Appleの開発者ドキュメントから適応されています。詳細については、アプリやウェブサイトがあなたのコンテンツにリンクすることを許可するを参照してください。

ステップ 1: アプリ資格の設定

ステップ 1a: アプリ {#step-1a} の登録

  1. developer.apple.comを実行してログインしてください。
  2. 証明書、識別子、プロファイルをクリックします。
  3. 識別子をクリックします。
  4. アプリ識別子がまだ登録されていない場合は、+ をクリックして作成します。 a. 名前を入力してください。これはあなたが望むものなら何でもかまいません。 b. バンドルIDを入力します。適切なビルドターゲットのXコードプロジェクトのGeneralタブからバンドルIDを見つけることができます。

ステップ 1b: アプリ識別子で関連ドメインをオンにする

  1. 既存または新しく作成したApp Identifier で、App Services セクションを見つけます。
  2. [関連ドメイン] を選択します。
  3. [保存] をクリックします。

ステップ1c: Xcodeプロジェクトで関連ドメインをオンにする

続行する前に、Xcode プロジェクトで、アプリ識別子を登録した場所と同じチームが選択されていることを確認してください。

  1. Xcode で、プロジェクトファイルのCapabilitiesタブに移動します。
  2. 関連ドメインをオンにします。
トラブルシューティングのヒント

「識別子 ‘your-app-id’ を持つアプリIDは利用できません」というエラーが表示された場合。別の文字列を入力してください”, 次のことを行ってください:

  1. 選択したチームが正しいことを確認してください。
  2. Xcode プロジェクトのバンドル ID (ステップ1a) が、アプリ識別子の登録に使用されたものと一致していることを確認します。

ステップ1d: ドメイン資格の追加

[ドメイン] セクションで、適切なドメインタグを追加します。applinks: をプレフィックスとして使用する必要があります。この場合、applinks:yourdomain.comを追加したことがわかります。

ステップ1e: ビルド時に権利ファイルが含まれていることを確認してください

プロジェクトブラウザで、新しい資格ファイルが [ターゲットメンバーシップ] で選択されていることを確認します。

Xcodeはこれを自動的に処理するはずです。

ステップ2:Web サイトをホストするようにAASAファイルを構成する

iOSでネイティブアプリとWebサイトのドメインを関連付けるには、WebサイトにApple App Site Association (AASA)ファイルをホストする必要があります。このファイルは、iOS に対するドメイン所有権を安全に検証する手段となります。iOS 9より前では、開発者は検証なしで任意の URI スキームを登録してアプリを開くことができました。しかし、AASAを使用すると、このプロセスははるかに安全で信頼性が高くなります。

AASAファイルには、アプリのリストと、ユニバーサルリンクとして含めるべきまたは除外するべきドメイン上のURLパスを含むJSONオブジェクトが含まれています。こちらはサンプルのAASAファイルです:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": “JHGFJHHYX.com.facebook.ios",
        "paths": [
          "*"
        ]
      }
    ]
  }
}
  • appID: お使いのアプリのチームID(チームIDを取得するにはhttps://developer.apple.com/account/#/membership/に移動)とバンドル識別子を組み合わせて構築されます。上記の例では、「JHGFJHHYX」はチームIDであり、「com.facebook.ios」はバンドルIDです。
  • paths: 関連付けから含まれるまたは除外されるパスを指定する文字列の配列。パスの前にNOTを使用してパスを無効にすることができます。この例では、このパス上のすべてのリンクはアプリを開くのではなく、Webに移動します。ディレクトリ内のすべてのパスを有効にするために*をワイルドカードとして使用でき、単一の文字に一致させるために?を使用できます(例えば、/archives/201?/は2010年から2019年までのすべての数字に一致します)。

ステップ 3:ドメインにAASAファイルをホストする

AASA ファイルの準備ができたら、ドメインでhttps://<<yourdomain>>/apple-app-site-association またはhttps://<<yourdomain>>/.well-known/apple-app-site-association のいずれかでAASA ファイルをホストできます。

apple-app-site-associationファイルをHTTPS Webサーバーにアップロードします。ファイルをサーバーのルートまたは.well-knownサブディレクトリに配置できます。ファイル名に.jsonを追加しないでください。

AASAファイルをホスティングする際は、ファイルがこれらのガイドラインに従っていることを確認してください:

  • HTTPS経由で提供されます。
  • application/json MIME タイプを使用します。
  • 128 KB を超えない(iOS 9.3.1 以降の要件)

ステップ 4:ユニバーサルリンクを処理するためにアプリを準備する

iOSデバイスでユーザーがユニバーサルリンクをタップすると、デバイスはアプリを起動し、NSUserActivityオブジェクトを送信します。その後、アプリはNSUserActivity オブジェクトを照会して、起動方法を判断できます。

アプリでユニバーサルリンクを使用するには、次のステップを実行します。

  1. お使いのアプリがサポートするドメインを指定する権利を追加します。
  2. アプリデリゲートを更新して、NSUserActivityオブジェクトを受け取ったときに適切に応答するようにします。

Xコード では、Capabilities タブのAssociated Domains セクションを開封し、applinks: の接頭辞を付けたアプリがサポートするドメインごとにエントリを追加します。たとえば applinks:www.mywebsite.com です。

ステップ 5: ユニバーサルリンクをテストする

ユニバーサルリンクをメールに追加して、テストデバイスに送信します。SafariのURLフィールドにユニバーサルリンクを直接貼り付けても、アプリが自動的に開封されることはありません。この操作を行うと、手動でWeb サイトを引き下げて、対応するアプリを開封するように求めるプロンプトが上部に表示されます。

これらの手順は、Android開発者ドキュメントから適応されています。詳細については、Androidアプリリンクの追加およびアプリコンテンツへのディープリンクの作成を参照してください。

ステップ 1:ディープリンクを作成

まず、Androidアプリのディープリンクを作成する必要があります。これは、インテントフィルターAndroidManifest.xmlファイルに追加することで実行できます。インテントフィルターにはVIEWアクションとBROWSABLEカテゴリ、およびデータ要素にWebサイトのURLを含める必要があります。

ステップ2:アプリをWebサイトに関連付ける

アプリをWebサイトに関連付ける必要があります。そのために、デジタルアセットリンクファイルを作成します。このファイルは JSON 形式である必要があり、Web サイトへのリンクを開封できる Android アプリに関する詳細が含まれています。Web サイトの.well-known ディレクトリーに配置する必要があります。

ステップ 3:アプリのマニフェストファイルを更新してください

AndroidManifest.xml ファイルで、アプリライケーション要素内にメタデータ要素を追加します。メタデータ要素には、「asset_statements」の android:name 属性と、Web サイトの URL が含まれる文字列配列を持つリソースファイルを指す android:resource 属性が必要です。

ステップ 4:アプリをディープリンクに対応させる準備をする

Androidアプリでは、受信したディープリンクを処理する必要があります。これを行うには、アクティビティを開始したインテントを取得し、そこからデータを抽出します。

ステップ 5: ディープリンクのテスト

最後に、ディープリンクをテストできます。メッセージングアプリやメールを通じて自分にリンクを送信し、それをクリックします。すべてが正しく設定されている場合は、アプリが開かれます。

ユニバーサルリンク、アプリリンク、クリックトラッキング

私たちのメール送信パートナーであるSendGridとSparkPostは、クリックトラッキングドメインを使用してすべてのリンクをラップし、BrazeのメールでクリックトラッキングのためのURLパラメータを含めます。

例えば、https://www.example.comのようなリンクはhttps://links.email.example.com/uni/wf/click?upn=abcdef123456…のようになります。

メールリンクをクリックトラッキングでユニバーサルリンクまたはアプリリンクとして機能させるには、追加の設定が必要です。クリックトラッキングドメイン (links.email.example.com) を、アプリを開くことが許可されているドメインとして必ず追加してください。また、クリックトラッキングドメインは、AASA (iOS) またはデジタルアセットリンク (Android) ファイルを提供する必要があります。これにより、クリックトラッキング付きのメールリンクがシームレスに機能するようになります。

すべてのクリックトラッキングリンクをユニバーサルリンクまたはアプリリンクにしたくない場合は、メール送信パートナーに基づいて、どのリンクをユニバーサルリンクにするかを指定できます。詳細については、次のセクションを参照してください。

SendGrid

SendGridのクリックトラッキングリンクをユニバーサルリンクとして扱うには:

  1. AASA または AndroidManifest の pathPrefix 値を設定して、URL パスに /uni/ が含まれているリンクのみをユニバーサルリンクとして扱うようにします。
  2. リンクのアンカータグ(<a>)に属性universal="true"を追加します。これにより、ラップされたリンクのURLパスが/uni/を含むように変更されます。

以下に例を示します。

1
<a href=”https://www.example.com” universal="true">

3.アプリがラップされたリンクを適切に処理するように設定されていることを確認してください。SendGrid クリックトラッキングリンクの解決に関する SendGrid の記事を参照し、ご使用のオペレーティングシステムのステップに従ってください。この記事には、iOSおよびAndroidのサンプルコードが含まれています。

この構成では、URL パスに /uni/ が含まれるリンクはユニバーサルリンクとして機能し、それ以外のリンクは Web リンクとして機能します。

SparkPost

SparkPostのクリックトラッキングリンクをユニバーサルリンクとして扱うには、メールのドラッグアンドドロップエディタの属性セクションに次の属性を追加するか、リンクのHTMLを手動で編集してリンクのアンカータグに次の属性を含めます: data-msys-sublink="custom_path"

このカスタムパスにより、その値を持つURLをユニバーサルリンクとして選択的に処理できます。

以下に例を示します。

1
<a href=”https://www.example.com” data-msys-sublink="open-in-app">

次に、アプリがカスタムパスを適切に処理するように設定されていることを確認してください。SparkPost クリックトラッキングの使用に関する SparkPost の記事を参照してください。この記事には、iOSおよびAndroidのサンプルコードが含まれています。

クリックトラッキングによるユニバーサルリンクのトラブルシューティング

メールでユニバーサルリンクが期待通りに機能しない場合、例えば受信者がメールアプリからWebブラウザに移動し、最終的にアプリにリダイレクトされる場合は、ユニバーサルリンクの設定をトラブルシューティングするためのこれらのヒントを参照してください。

リンクファイルの場所を確認する

AASA ファイル(iOS) またはデジタルアセットリンクファイル (Android) が正しい場所にあることを確認してください。

  • iOS: https://click.tracking.domain/.well-known/apple-app-site-association
  • Android: https://click.tracking.domain/.well-known/assetlinks.json

これらのファイルが常に公開アクセス可能であることを確認することが重要です。アクセスできない場合は、メールのユニバーサルリンクの設定でステップを見逃した可能性があります。

ドメイン定義を確認する

アプリを開くことが許可されているドメインの定義が正しいことを確認してください。

  • iOS:アプリ用に Xcode で設定された関連ドメインを確認します (ステップ1c)。クリックトラッキングドメインがそのリストに含まれていることを確認してください。
  • Android :アプリ情報ページを開封します(アプリアイコンを長押しして、ⓘをクリックします)。アプリ情報メニュー内で、デフォルトで開封を見つけてタップします。これにより、アプリを開くことが許可されているすべての検証済みリンクが表示されます。クリックトラッキングドメインがそのリストに含まれていることを確認してください。
「このページはどの程度役に立ちましたか?」
New Stuff!