Skip to content

iOSディープリンクガイド

このガイドでは、使用するメッセージングチャネルやBranchなどのサードパーティリンクプロバイダーの利用有無に応じて、iOSアプリに適したディープリンク戦略を選択する方法を説明します。

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

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

リンクタイプ 最適な用途 アプリ未インストールでも開けるか
カスタムスキーム myapp://products/123 プッシュ、アプリ内メッセージ、Content Cards いいえ — リンクは機能しません
ユニバーサルリンク https://myapp.com/products/123 メール、SMS、クリックトラッキングのあるチャネル はい — Webにフォールバックします
アプリ内でWeb URLを開く 任意の https:// URL モーダル WebView での Web コンテンツの表示 N/A — 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に追加します
App delegateメソッド application(_:open:options:)を実装してURLを解析し、ナビゲーションを行います
Braze SDK設定 不要 — SDKはデフォルトでカスタムスキームURLを開きます

ユニバーサルリンク

要件 詳細
AASAファイル 必須 — https://yourdomain.com/.well-known/apple-app-site-associationでホストします
Associated Domains XcodeのSigning & Capabilitiesapplinks:yourdomain.comを追加します
App delegateメソッド application(_:continue:restorationHandler:)を実装してNSUserActivityを処理します
Braze SDK設定 configuration.forwardUniversalLinks = trueを設定します
BrazeDelegate(オプション) カスタムルーティング(例:Branch)のためにbraze(_:shouldOpenURL:)を実装します

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

要件 詳細
AASAファイル 不要
App delegateメソッド 不要 — 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の設定手順については、ユニバーサルリンクとアプリリンクを参照してください。

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

実装するデリゲートメソッドは、使用するリンクの種類によって異なります。

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

BrazeとBranchを併用する

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

  1. Branch SDKBranchのドキュメントに従ってBranch SDKを統合します。
  2. Associated Domains:XcodeのSigning & CapabilitiesでBranchドメイン(例:applinks:yourapp.app.link)を追加します。
  3. BrazeDelegate:BranchリンクをBrazeが直接処理するのではなく、Branch SDKにルーティングするためにbraze(_:shouldOpenURL:)を実装します。
  4. ユニバーサルリンクの転送:Braze SDKの設定でconfiguration.forwardUniversalLinks = trueを設定します。

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

New Stuff!