このページ:メールや SMS コンテンツにディープリンクを作成し、Adobe Journey Optimizer で設定し、iOS および Android アプリで追跡されたリンクを処理して、受信者がアプリ内の適切な画面に表示されるようにする方法について説明します。
ディープリンクは、メールや SMS メッセージの受信者を、モバイルアプリの特定の画面やコンテンツに移動するのに役立ちます。 人物を web ブラウザーやアプリストアを通じてルーティングすることなく、意図したアプリ内エクスペリエンスに直接移動できるので、関連性の高いブランドに即したジャーニーを維持できます。
受信者がディープリンクをクリックすると、受信者は意図したアプリ内コンテンツに直接移動します(以下を完了した場合)。
/ee/v1/mclick/*)を使用して、iOS と Android の両方でディープリンクをサポートし、互換性とクリックのトラッキングを確保します。ディープリンクのオーサリング authoring
メール authoring-email
メールメッセージの場合、ディープリンクを挿入するには、次の 2 つのオプションがあります。
-
E メールデザイナー:リンクトラッキングが有効になっていることを確認します。 リンクする要素(テキスト、ボタン、画像)を選択し、コンテキストツールバーの「リンクを挿入」をクリックして、「ディープリンク」を選択し、ディープリンク URL を入力します。 リンクの挿入の詳細情報
-
パーソナライゼーションエディター(コード):次のスニペットを使用して、ディープリンクを HTML に直接挿入します。
code language-html <a class="arc-link" data-nl-type="DEEPLINK" href="<<deeplink_url>>" id="acr-link-7821368" style="text-decoration:underline;" target="_blank" data-tracking-type="DEEPLINK">Click Here</a>note tip TIP <<deeplink_url>>を実際のディープリンク URL に置き換え、各ブロックに一意のidを使用して競合を回避します。
SMS authoring-sms
SMS の場合、ディープリンクは、パーソナライゼーションエディターの URL ヘルパー関数を使用して作成されます。 SMS コンテンツにリンクを追加する方法について詳しくは、この節を参照してください。
SMS コンテンツにディープリンクを挿入するには、次の構文を使用します。
{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
<<url>> を実際のディープリンク URLに置き換えます。Adobe Journey Optimizer の設定 configuration
モバイルアプリのメールや SMS でディープリンクを使用するには、以下の設定手順を完了します。
-
Journey Optimizer で、ディープリンクが有効になっているサブドメインをデリゲートします。 詳細情報
-
iOS の AASA ファイルや Android の assetLinks.json ファイルをサブドメインにホストします。 詳しくは、アドビカスタマーケアまたはアドビ担当者にお問い合わせください。
-
iOS(AASA)の場合:
- 委任されたサブドメイン
- アプリバンドル ID
-
Android(assetLinks.json)の場合:
- 委任されたサブドメイン
- アプリバンドル ID
- SHA-256 証明書のフィンガープリント
-
/ee/v1/mclick/* の下にある URL が使用されます。モバイルアプリの実装 mobile-implementation
この節では、一般的な HTTPS 設定(ユニバーサルリンクとアプリリンク)で、単一の URL で次の操作が実行できるように、Adobe Journey Optimizer を使用してモバイルディープリンクを実装する方法について説明します。
- アプリがインストールされた場合は、モバイルアプリ内の特定の画面を開く。
- アプリがインストールされていない場合は、web サイトをフォールバックとして開く。
メッセージに対してリンクトラッキングが有効になっている場合、Journey Optimizer は引き続きこれらのクリックを追跡して、レポートに含め、メッセージで実行する場合は、コンテンツ実験に使用できます。
この節では、ディープリンクの一般的な実装パターンについて説明します。 正確な設定は、アプリアーキテクチャとルーティングフレームワークによって異なります。
iOS(ユニバーサルリンク) ios-implementation
-
Xcodeで、署名と機能/+ 機能/関連ドメインを通じてターゲットを選択します。
-
デリゲートされたサブドメインのエントリを追加します。例:
code language-text applinks:www.mybusiness.com applinks:data.email.mybusiness.com -
アプリ内のユニバーサルリンクを処理し、応答ヘッダーから元のリンクを取得します。
accordion 例:シーンを使用する iOS 13 以降 code language-swift class SceneDelegate: UIResponder, UIWindowSceneDelegate { func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let incomingURL = userActivity.webpageURL else { return } handleUniversalLink(url: incomingURL) } private func handleUniversalLink(url: URL) { // Only handle AJO tracked mobile clicks guard url.host == "data.email.mybusiness.com", url.path.hasPrefix("/ee/v1/mclick") else { // Could also handle direct www.mybusiness.com links here return } resolveTrackedUrlAndRoute(url) } private func resolveTrackedUrlAndRoute(_ trackedUrl: URL) { var request = URLRequest(url: trackedUrl) request.httpMethod = "GET" URLSession.shared.dataTask(with: request) { _, response, error in guard error == nil, let httpResponse = response as? HTTPURLResponse, let locationValue = httpResponse.allHeaderFields["Location"] as? String, let finalUrl = URL(string: locationValue) else { return } DispatchQueue.main.async { self.routeToDestination(finalUrl) } }.resume() } private func routeToDestination(_ url: URL) { // Example: map URL paths to screens // https://www.mybusiness.com/dashboard/offers/coupons // → OffersViewController for Coupons } }
mclick URL に対して GET を実行し、Location ヘッダーを読み取り、最終的な URL に基づいてルーティングする必要があります。mclick URL を開くようなことはしないでください。それではディープリンクの目的が果たせなくなります。Android(アプリリンク) android-implementation
-
Android アプリにアプリリンクのインテントフィルターを追加します。
code language-xml <activity android:name=".DeepLinkActivity" android:exported="true"> <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="data.email.mybusiness.com" android:pathPrefix="/ee/v1/mclick" /> </intent-filter> </activity> -
ディープリンクハンドラーを実装します。
accordion Kotlin の場合: code language-kotlin class DeepLinkActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val trackedUri = intent?.data if (trackedUri == null || trackedUri.host != "data.email.mybusiness.com" || !trackedUri.path.orEmpty().startsWith("/ee/v1/mclick")) { finish() return } resolveTrackedUrlAndRoute(trackedUri) } private fun resolveTrackedUrlAndRoute(trackedUri: Uri) { lifecycleScope.launch(Dispatchers.IO) { try { val finalUrl = followRedirect(trackedUri.toString()) withContext(Dispatchers.Main) { routeToDestination(finalUrl) finish() } } catch (e: Exception) { // Optionally log error, fallback to browser finish() } } } private fun followRedirect(trackedUrl: String): Uri { val client = OkHttpClient.Builder() .followRedirects(false) // We want to read Location ourselves .build() val request = Request.Builder() .url(trackedUrl) .get() .build() client.newCall(request).execute().use { response -> val location = response.header("Location") ?: throw IllegalStateException("Missing Location header") return Uri.parse(location) } } private fun routeToDestination(finalUri: Uri) { // Example: interpret https://www.mybusiness.com/dashboard/offers/coupons // and open the correct Activity / Fragment } }
mclick URLを呼び出し、Location ヘッダーを使用して最終的な宛先を決定する必要があります。followRedirects(false) を使用して、リダイレクト処理を制御し、必要に応じて分析を正確にログ記録できます。推奨プラクティス deeplink-best-practices
- 安定したパスを使用:アプリの UI 変更の影響を受けにくいルート(例:
/tab/3/view/2の代わりに/account/orders)を優先します。 - 追跡されるパスを考慮:リンクトラッキングが有効な場合、クリックしたリンクは追跡されるパスパターン(例:
/ee/v1/mclick/)を使用する場合があります。 追跡されるリンクを解決した後の最終的な URL を、ルーターが解析できることを確認してください。 - パラメーターを予測可能なままにする:一貫性のあるパラメータスキーム(例:
?orderId=12345)を定義します。 - URL 内の機密データを回避:秘密鍵や個人データをディープリンクの URL に直接配置しないようにします。
- ディープリンクをテスト:本配信前確認を送信し、アプリがインストールされているデバイスでディープリンクをクリックします。
- 実際のデバイスで検証:ユニバーサルリンクやトラッキングリンクの解決動作は、シミュレーターではなく物理デバイス検証する方が信頼性が高くなります。
- アプリサイドのルーティングを検証:ディープリンクで予想される画面が開かない場合は、アプリサイドのルーティングと URL の形式(ホスト/パス/クエリおよび URL エンコーディング)を検証します。
- アプリの初期化を念頭に置く:アプリリンクやユニバーサルリンクの動作は、アプリがインストールされ、1 回以上開かれた後に最も信頼性が高くなります。
トラブルシューティングと FAQ troubleshooting-faq
- URLが、アプリが処理するように登録されているホストおよびパスのパターンと一致することを確認してください。これには、リンクトラッキングが有効な場合の追跡されるクリックパス(例:
/ee/v1/mclick/の下にあるパス)も含まれます。 - iOS のユニバーサルリンクやAndroid のアプリリンクの場合は、ドメインの関連付け(AASA/
assetlinks.json)が正しく設定され、到達できることを確認してください。 - 実際のデバイスでテストしてください(シミュレーター/エミュレーターでは、リンクの関連付けに関する動作が異なる場合があります)。
- アプリサイドのルーターが URL のパス/クエリを正しく解析することを確認してください。
- URL エンコーディングを確認してください。予約済みの文字は URL エンコードされている必要があります。
- パラメーター名と値が、ルーターの想定と一致することを検証してください。
- 同じ HTTPS URL を web サイトで指定できる場合、アプリがインストールされていない際に、そのリンクをフォールバックとして web ページで開くことができます(web の宛先やルーティングを適切に設定してください)。
-
ディープリンクを含む本配信前確認を作成し、iOS デバイスや Android デバイス(アプリがインストールされている場合とされていない場合の両方)でクリックしてください。
-
以下の点について検証してください。
- 最終的なメールまたは SMS のリンク値(ホスト/パス/クエリ)
- OS レベルでの関連付け(ユニバーサルリンクやアプリリンクを使用している場合)
- アプリ内でのルーティング結果
assetlinks.json の設定をリクエストしてください。appname://path)を使用する必要がありますか?appname://path)を使用できますが、推奨されるアプローチはユニバーサルリンクまたはアプリリンク(例:https://)で、このページの設定および実装の節で説明されている HTTPS ベースの設定と一致します。mclick の URL に対して GET を実行した際に Location ヘッダーで返される最終的な URL に含まれるので、アプリ内分析に使用できます。/ee/v1/click/ URL のユーザーエクスペリエンスは何ですか?mclick フローを通じたアプリのディープリンクとして処理されるのではなく、デバイスのデフォルトの web ブラウザーで開かれます(標準的なクリックの追跡の動作)。This section contains structured knowledge intended to support interpretation, retrieval, and question answering related to this topic.
For complete understanding, this information should be combined with the documentation on this page. Neither source is intended to stand alone; the page describes the feature, while this section provides additional context that helps disambiguate terminology, intent, applicability, and constraints.
- TL;DR: This page explains how to author deep links in email and SMS content, configure them in Journey Optimizer, and handle the tracked links in iOS and Android apps so recipients land on the right in-app screen.
Intents:
- Author a deep link in email (Email Designer or Personalization editor code) and in SMS (Url helper function)
- Complete the Journey Optimizer configuration for universal links (iOS) and app links (Android)
- Implement mobile app handling of tracked
mclicklinks in iOS and Android - Follow recommended practices and troubleshoot deep links that do not open the app or the expected screen
- Test deep links end-to-end by sending a proof and clicking on real devices
Glossary:
- Deep link: A link that takes recipients from an email or SMS message directly to a specific screen or content in a mobile app (product-specific)
- Universal links (iOS) / App links (Android): HTTPS-based deep links the configuration on this page applies to (product-specific)
- AASA / assetLinks.json: The association files hosted on your delegated subdomain for iOS (AASA) and Android (assetLinks.json) (product-specific)
/ee/v1/mclick/*: Tracked URLs that Adobe hosts and resolves for deep link clicks when link tracking is enabled (product-specific)
Guardrails:
- Deep links will not work unless you complete both the configuration and the mobile app implementation steps on this page.
- Deep linking is supported for both iOS and Android using tracked URLs (
/ee/v1/mclick/*) for compatibility and click tracking. - The configuration section applies when you use universal links (iOS) and app links (Android), which are HTTPS-based deep links.
- Tracked deep link clicks use URLs under
/ee/v1/mclick/*, which Adobe hosts and resolves, and apply when link tracking is enabled for the message. - For non-tracked links, the URL is not rewritten through Adobe systems; you must configure universal links or app links on your own domains and hosting.
- The app must perform a GET on the
mclickURL and read theLocationheader, then route based on the final URL; do not simply open themclickURL in a browser. - Hosting the AASA (iOS) and assetLinks.json (Android) files requires contacting Adobe Customer Care with the delegated subdomain and app bundle ID; Android also requires the SHA-256 certificate fingerprint.
Terminology:
- Canonical name: Deep link — Acronym: n/a — variants: deeplink, Deeplink (Insert link option)
- Synonyms: “universal links” (iOS) and “app links” (Android) = the HTTPS-based deep link setup
- Do not confuse: “
/ee/v1/mclick/*” (tracked deep link flow handled as an app deep link) ≠ “/ee/v1/click/” (opens in the device’s default web browser, standard click tracking) - Do not confuse: “tracked links” (rewritten through Adobe, use
mclick) ≠ “non-tracked links” (not rewritten; configured on your own domains)
FAQ:
- Q: What must be done before deep links work? — Complete both the configuration steps in Journey Optimizer and the mobile app implementation steps for iOS and Android.
- Q: How should the app handle the tracked link? — Perform a GET on the
mclickURL, read theLocationheader, and route based on the final URL; do not open themclickURL directly in a browser. - Q: What happens if the app is not installed? — If the same HTTPS URL can be served by your website, the link can open a web page as a fallback.
- Q: Are UTM parameters available in the app? — Yes; UTM parameters configured in Journey Optimizer are included in the final URL returned in the
Locationheader. - Q: How do I test end-to-end? — Send a proof (create a proof with a deep link) and click it on iOS and Android devices, for both installed and not-installed scenarios, validating on real devices.
- Q: Should I use a custom URL scheme like
appname://path? — You can, but the recommended approach is a universal link or app link (https://) matching the HTTPS-based setup on this page.