이 페이지에서: 전자 메일 및 SMS 콘텐츠에서 딥링크를 작성하고, Adobe Journey Optimizer에서 구성하고, 수신자가 올바른 인앱 화면에 도달하도록 iOS 및 Android 앱에서 추적된 링크를 처리하는 방법에 대해 알아봅니다.
딥 링크를 사용하면 이메일 또는 SMS 메시지에서 수신자를 모바일 앱의 특정 화면 또는 콘텐츠로 안내할 수 있습니다. 웹 브라우저나 앱스토어를 통해 라우팅하지 않고도 의도한 인앱 여정으로 바로 이동할 수 있으므로 사용자가 브랜드에 맞게 적절한 작업을 수행할 수 있습니다.
수신자가 딥링크를 클릭하면 의도한 인앱 콘텐츠로 바로 이동합니다. 완료한 경우:
/ee/v1/mclick/*)을 사용하여 iOS 및 Android 모두에 대한 딥링크를 지원하여 호환성과 클릭 추적을 보장합니다.딥링크 작성 authoring
이메일 authoring-email
이메일 메시지의 경우 딥 링크를 삽입하는 두 가지 옵션이 있습니다.
-
전자 메일 Designer: 링크 추적이 활성화되어 있는지 확인. 연결할 요소(텍스트, 단추 또는 이미지)를 선택하고 상황별 도구 모음에서 링크 삽입을 클릭한 다음 딥링크를 선택하여 딥링크 URL을 입력합니다. 링크 삽입에 대한 자세한 정보
-
Personalization 편집기(코드): 다음 코드 조각을 사용하여 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로 바꾸십시오.Journey Optimizer의 구성 configuration
모바일 앱용 이메일 및 SMS에서 딥 링크를 사용하려면 아래 구성 단계를 완료하십시오.
-
Journey Optimizer에서 딥링크가 활성화된 하위 도메인을 위임합니다. 자세히 알아보기
-
하위 도메인에서 iOS용 AASA 파일 및 Android용 assetLinks.json 파일을 호스팅합니다. 자세한 내용은 Adobe 고객 지원 센터 또는 Adobe 담당자에게 문의하십시오.
-
AASA(iOS)의 1}:
- 위임된 하위 도메인
- 앱 번들 ID
-
Android(assetLinks.json)의 경우:
- 위임된 하위 도메인
- 앱 번들 ID
- SHA-256 인증서 지문
-
/ee/v1/mclick/*의 URL을 사용합니다.모바일 앱 구현 mobile-implementation
이 섹션에서는 일반적인 HTTPS 설정(범용 링크 및 앱 링크)에서 단일 URL이 다음을 수행할 수 있도록 Adobe Journey Optimizer과(와) 함께 모바일 딥링크를 구현하는 방법을 설명합니다.
- 앱이 설치되면 모바일 앱 내의 특정 화면을 엽니다. 또는
- 앱이 설치되지 않은 경우 웹 사이트를 대체 항목으로 엽니다.
메시지에 대해 링크 추적이 활성화되면 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 헤더를 읽은 다음 final 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 코틀린에서: 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 인코딩)을 검사하십시오.
- 앱 초기화를 염두에 두십시오: 앱 링크/범용 링크 동작은 앱을 한 번 이상 설치하고 연 후에 가장 안정적입니다.
문제 해결 및 FAQ troubleshooting-faq
- 링크 추적이 활성화된 경우 추적된 클릭 경로를 포함하여 URL이 앱이 처리하도록 등록된 호스트 및 경로 패턴과 일치하는지 확인합니다(예:
/ee/v1/mclick/아래의 경로). - iOS 범용 링크 및 Android 앱 링크의 경우 도메인 연결(AASA /
assetlinks.json)이 올바르게 구성되어 연결할 수 있는지 확인하십시오. - 실제 장치에서 테스트합니다(시뮬레이터/에뮬레이터는 링크 연결에 대해 다르게 작동할 수 있음).
- 앱 측 라우터가 URL 경로/쿼리를 올바르게 구문 분석하는지 확인합니다.
- URL 인코딩 확인: 예약된 문자는 URL로 인코딩해야 합니다.
- 매개 변수 이름 및 값이 라우터의 예상 값과 일치하는지 확인합니다.
- 웹 사이트에서 동일한 HTTPS URL을 제공할 수 있는 경우 링크는 앱이 설치되지 않은 경우 대체 항목으로 웹 페이지를 열 수 있습니다(그에 따라 웹 대상 및 라우팅을 구성).
-
딥링크로 증명을 만든 후 iOS 및 Android 장치(설치 및 설치되지 않은 시나리오)에서 클릭합니다.
-
유효성 검사:
- 최종 이메일 또는 SMS 링크 값(호스트/경로/쿼리)
- OS 수준 연결(범용 링크/앱 링크를 사용하는 경우)
- 인앱 라우팅 결과
assetlinks.json 구성을 요청하십시오.appname://path)?appname://path)를 사용할 수 있지만 권장되는 접근 방식은 범용 링크 또는 앱 링크(https://)로서, 이 페이지의 구성 및 구현 섹션에 있는 HTTPS 기반 설정과 일치합니다.mclick URL에서 GET을 수행할 때 Location 헤더에 반환되는 최종 URL에 포함되므로 인앱 분석에 사용할 수 있습니다./ee/v1/click/ URL의 사용자 경험은 무엇입니까?mclick 흐름을 통해 앱 딥링크로 처리되지 않고, 장치의 기본 웹 브라우저(표준 클릭 추적 동작)에서 열립니다.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.