コンテンツにスキップ

iOSディープリンクガイド

このガイドは、iOSアプリに適したディープリンク戦略を選択するのに役立ちます。どの戦略を選ぶかは、使用するメッセージングチャネルと、Branchなどのサードパーティリンクプロバイダーを使用しているかどうかによって異なります。

実装の詳細については、ディープリンクを参照してください。トラブルシューティングについては、ディープリンクのトラブルシューティングを参照してください。

iOS アプリで Braze メッセージからのリンクを処理する方法は 3 つあります。それぞれ動作が異なり、適したチャネルとユースケースも異なります。

リンクタイプ 例 最適な用途 アプリ未インストール時に開くか
カスタムスキーム myapp://products/123 プッシュ、アプリ内メッセージ、Content Cards、バナー いいえ — リンクは失敗します
ユニバーサルリンク https://myapp.com/products/123 メール、SMS、クリックトラッキングを使用するチャネル はい — Web にフォールバックします
アプリ内でWeb URLを開く 任意の https:// URL モーダル WebView での Web コンテンツの表示 該当なし — WebView に表示されます

カスタムスキームのディープリンク (myapp://products/123 など) は、アプリを直接特定の画面で開きます。サードパーティによってリンクが変更されないチャネルでは、最もシンプルな選択肢です。

カスタムスキームのディープリンクを使用するケース:

  • プッシュ通知、アプリ内メッセージ、Content Cards、またはバナーを送信する場合
  • アプリがインストールされていないときにリンクが機能する必要がない場合
  • クリックトラッキング (メール ESP によるリンクのラッピング) が不要な場合

カスタムスキームのディープリンクを使用しないケース:

  • メールを送信する場合 — ESP はクリックトラッキングのためにリンクをラップするため、カスタムスキームが機能しなくなります
  • アプリがインストールされていない場合に、リンクを Web ページにフォールバックさせる必要がある場合

ユニバーサルリンク (https://myapp.com/products/123 など) は、iOS がブラウザで開く代わりにアプリにルーティングできる標準の HTTPS URL です。サーバー側の設定 (AASA ファイル) とアプリ側の設定 (Associated Domains エンタイトルメント) が必要です。

ユニバーサルリンクを使用するケース:

  • メールを送信する場合。ESP はクリックトラッキングのためにリンクをラップするため、リンクは HTTPS である必要があります。
  • SMS など、リンクがラップまたは短縮されるチャネルで送信する場合。
  • アプリがインストールされていないときに、リンクを Web ページにフォールバックさせる必要がある場合。
  • Branch や AppsFlyer などのサードパーティのリンクプロバイダーを使用している場合。

ユニバーサルリンクを使用しないケース:

  • プッシュ、アプリ内メッセージ、バナー、または Content Cards からのディープリンクのみが必要な場合。カスタムスキームの方がシンプルです。

「アプリ内でWeb URLを開く」

このオプションは、アプリ内のモーダル WebView で Web ページを開きます。Braze SDKが Braze.WebViewController を使用してすべて処理するため、URL 処理のコードを記述する必要はありません。

「アプリ内でWeb URLを開く」を使用するケース:

  • アプリを離れずに Web ページ (プロモーションや記事など) を表示したい場合。
  • URL がアプリの特定の画面へのディープリンクではなく、標準の HTTPS Web ページである場合。

「アプリ内でWeb URLを開く」を使用しないケース:

  • アプリ内の特定のビューに移動する必要がある場合。代わりに、カスタムスキームまたはユニバーサルリンクを使用してください。
  • Web ページで認証が必要な場合、または埋め込みをブロックする Content Security Policy ヘッダーがある場合。

カスタムスキームのディープリンク

要件 詳細
AASA ファイル 不要
Info.plist CFBundleURLTypes にスキームを登録し、LSApplicationQueriesSchemes に追加します
アプリデリゲートメソッド カスタムスキームリンクを処理するには、application(_:open:options:) を実装します。アプリでシーンを使用している場合は scene(_:openURLContexts:) を実装します。これには、Braze メッセージから開かれるカスタムスキームリンクも含まれます
Braze SDKの設定 なし。braze(_:shouldOpenURL:) が false を返さない限り、SDKはデフォルトでカスタムスキームの URL を開きます

ユニバーサルリンク

要件 詳細
AASA ファイル 必須 — https://yourdomain.com/.well-known/apple-app-site-association でホストします
Associated Domains Xcode の Signing & Capabilities で applinks:yourdomain.com を追加します
アプリデリゲートメソッド NSUserActivity を処理するために application(_:continue:restorationHandler:) を実装します
Braze SDKの設定 configuration.forwardUniversalLinks = true を設定します
BrazeDelegate (任意) カスタムルーティング (Branch など) を行う場合は braze(_:shouldOpenURL:) を実装します

「Open Web URL Inside App」

要件 詳細
AASA ファイル 不要
アプリデリゲートメソッド 不要 — SDKが自動的に処理します
Braze SDKの設定 なし — キャンペーンコンポーザーで Open Web URL Inside App を選択します

AASAファイルが必要な場合

Apple App Site Association(AASA)ファイルは、ユニバーサルリンクを使用する場合にのみ必要です。AASAファイルは、アプリが処理できるURLをiOSに伝えます。

AASAファイルが必要な場合:

  • メールキャンペーンでディープリンクを送信する場合(ESPがリンクをHTTPSクリックトラッキングURLでラップするため)。
  • SMSキャンペーンでディープリンクを送信する場合(リンクがHTTPS URLに短縮される可能性があるため)。
  • Branch、AppsFlyer、またはその他のリンクプロバイダーを使用する場合(各プロバイダーが独自のHTTPSドメインを使用するため)。
  • プッシュ通知、アプリ内メッセージ、またはContent Cardsからユニバーサルリンクを使用する場合(一般的ではありませんが、forwardUniversalLinks = trueで可能です)。

AASAファイルが不要な場合:

  • プッシュ通知、アプリ内メッセージ、Content Cards、またはバナーからカスタムスキームのディープリンク(例:myapp://)のみを使用する場合。
  • Open Web URL Inside Appオプションを使用する場合。

AASAの設定手順については、ユニバーサルリンクとアプリリンクを参照してください。

リンクを処理するためにアプリコードが必要な場合

実装するデリゲートメソッドは、使用するリンクの種類と、カスタムルーティングロジックが必要かどうかによって異なります。

デリゲートメソッド 処理対象 実装するタイミング
BrazeDelegate.braze(_:shouldOpenURL:) Braze SDKによって開かれるすべてのURL Brazeメッセージに対してカスタムルーティングロジック(例:Branch、条件分岐処理、分析)が必要な場合
application(_:open:options:) または scene(_:openURLContexts:) カスタムスキームディープリンク(myapp://) Brazeメッセージを含む任意のチャネルからカスタムスキームディープリンクを使用する場合
application(_:continue:restorationHandler:) ユニバーサルリンク(https://) メール、SMSから、またはforwardUniversalLinks = trueでユニバーサルリンクを使用する場合

BrazeDelegate.shouldOpenURLとアプリケーションのURLオープンメソッドの比較

プッシュ通知、アプリ内メッセージ、Content Cards、バナーの場合、Braze SDKはURLを開く前にBrazeDelegate.braze(_:shouldOpenURL:)を呼び出します。URLコンテキストには送信元のチャネルが含まれます。このメソッドは次の用途に使用します。

  • Brazeが開く前に、URLをサードパーティプロバイダー(例:BranchやAppsFlyer)にルーティングする
  • 分析をログに記録する
  • falseを返して、BrazeがURLを開かないようにする

shouldOpenURLを実装しない場合、SDKのデフォルトはtrueを返し、BrazeがURLを開きます。カスタムスキームリンクはシステムを通じて開かれ、システムがアプリのscene(_:openURLContexts:)またはapplication(_:open:options:)を呼び出します。Webリンクは、メッセージの設定に応じてWebViewまたはブラウザーで開かれます。

shouldOpenURLを実装してfalseを返す場合は、そのメソッド内でURLを処理してください。BrazeはURLを開かず、アプリケーションまたはシーンのデリゲートメソッドにもURLを転送しません。

Brazeがカスタムスキームリンクを開くと、iOSはapplication(_:open:options:)を呼び出します。アプリがシーンを使用している場合はscene(_:openURLContexts:)を呼び出します。forwardUniversalLinks = trueの場合、Brazeはユニバーサルリンクをscene(_:continue:)またはapplication(_:continue:restorationHandler:)に直接渡します。両方が実装されている場合、Brazeはシーンのデリゲートメソッドのみを呼び出します。

BrazeでBranchを使用する

Branchをリンクプロバイダーとして使用する場合は、標準的なユニバーサルリンクの設定に加えて、いくつかの追加ステップが必要です。

  1. Branch SDK:Branchのドキュメントに従って、Branch SDKを統合します。
  2. Associated Domains:XcodeのSigning & Capabilitiesで、Branchドメイン(例:applinks:yourapp.app.link)を追加します。
  3. BrazeDelegate:braze(_:shouldOpenURL:)を実装して、BranchリンクをBranch SDKにルーティングします。ルーティング後にBrazeがURLを開かないように、falseを返します。
  4. ユニバーサルリンクの転送:Braze SDKの設定でconfiguration.forwardUniversalLinks = trueを設定します。

実装の詳細とデバッグのガイダンスについては、ディープリンク用のBranchを参照してください。

New Stuff!