Nesta página: saiba como criar deep links em conteúdo de email e SMS, configurá-los no Adobe Journey Optimizer e manipular os links rastreados nos aplicativos iOS e Android para que os destinatários cheguem à tela correta no aplicativo.
Os deep links ajudam a direcionar os recipients de um email ou mensagem SMS para uma tela ou conteúdo específico no aplicativo móvel. Isso ajuda a trazer as pessoas diretamente para a experiência no aplicativo desejada, sem encaminhá-las por um navegador da Web ou uma loja de aplicativos, para que a jornada permaneça relevante e sob a marca.
Quando os destinatários clicam no deep link, eles são direcionados para o conteúdo pretendido no aplicativo - contanto que você tenha concluído:
-
as etapas de configuração no Journey Optimizer;
-
as etapas da implementação do aplicativo móvel para iOS e Android em seu aplicativo móvel.
/ee/v1/mclick/*) para garantir compatibilidade e rastreamento de cliques.Criação de deep links authoring
Email authoring-email
Para mensagens de email, você tem duas opções para inserir um deep link:
-
Designer de email: verifique se o rastreamento de links está habilitado. Selecione o elemento que deseja vincular (texto, botão ou imagem), clique em Inserir link na barra de ferramentas contextual e escolha Deeplink para inserir a URL do deep link. Saiba mais sobre como inserir links
-
Editor do Personalization (código): insira o deep link diretamente na HTML usando o seguinte trecho:
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 Substitua <<deeplink_url>>pela URL real do deep link e use umidexclusivo para cada bloco para evitar conflitos.
SMS authoring-sms
Para SMS, os deep links são criados usando a função auxiliar Url no editor de personalização. Saiba como adicionar links ao conteúdo de SMS nesta seção.
Para inserir deep links em conteúdo de SMS, use a seguinte sintaxe:
{{url originalUrl='<<url>>' type='DEEPLINK' action='CLICK'}}
<<url>> pela URL real do deep link.Configuração no Journey Optimizer configuration
Para poder usar deep links em emails e SMS para seus aplicativos móveis, conclua as etapas de configuração abaixo.
-
No Journey Optimizer, delegue o subdomínio em que o deep linking está ativado. Saiba mais
-
Hospede o arquivo AASA para o iOS e o arquivo assetLinks.json para o Android no subdomínio. Entre em contato com o Atendimento ao cliente da Adobe ou com o representante da Adobe com os detalhes abaixo:
-
Para o iOS (AASA):
- Subdomínio delegado
- ID do pacote do aplicativo
-
Para o Android (assetLinks.json):
- Subdomínio delegado
- ID do pacote do aplicativo
- Impressão digital do certificado SHA-256
-
/ee/v1/mclick/*, que a Adobe hospeda e resolve.Implementação do aplicativo móvel mobile-implementation
Esta seção explica como implementar deep links para dispositivos móveis com o Adobe Journey Optimizer para que, em uma configuração típica do HTTPS (links universais e links de aplicativos), uma única URL possa:
- Abra uma tela específica dentro do aplicativo móvel quando o aplicativo estiver instalado ou
- Abra o site como um fallback quando o aplicativo não estiver instalado.
Quando o rastreamento de links é habilitado para sua mensagem, o Journey Optimizer continua a rastrear esses cliques, os inclui nos relatórios e pode usá-los em experimentos de conteúdo se você executá-los na mensagem.
Esta seção fornece padrões comuns de implementação para deep links. A configuração exata depende da arquitetura do aplicativo e da estrutura de roteamento.
iOS (Links universais) ios-implementation
-
No Xcode, selecione seu destino por meio de Assinatura e Recursos > + Recurso > Domínios Associados.
-
Adicione entradas para subdomínios delegados, por exemplo:
code language-text applinks:www.mybusiness.com applinks:data.email.mybusiness.com -
Gerencie Links universais no aplicativo e obtenha o link original do cabeçalho de resposta.
accordion Exemplo: iOS 13+ com cenas 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 e ler o cabeçalho Location e, em seguida, rotear com base na URL final.mclick no Safari; isso anula a finalidade do deep link.Android (Links de aplicativo) android-implementation
-
Adicione o filtro de intenção Link do aplicativo no aplicativo 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> -
Implemente o manipulador de deep link.
accordion Em 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 e usar o cabeçalho Location para determinar o destino final.followRedirects(false) para controlar o tratamento do redirecionamento e registrar a análise com precisão, se necessário.Práticas recomendadas deeplink-best-practices
- Usar caminhos estáveis: prefira rotas resilientes às alterações na interface do usuário do aplicativo (por exemplo
/account/ordersem vez de/tab/3/view/2). - Conta para caminhos rastreados: quando o rastreamento de link está habilitado, o link clicado pode usar padrões de caminho rastreado (por exemplo,
/ee/v1/mclick/). Verifique se o roteador pode analisar o URL final após resolver o link rastreado. - Manter parâmetros previsíveis: defina um esquema de parâmetros consistente (por exemplo,
?orderId=12345). - Evite dados confidenciais nas URLs: não coloque segredos ou dados pessoais diretamente na URL do deep link.
- Testar seu deep link: envie uma prova e clique no deep link em um dispositivo no qual o aplicativo está instalado.
- Validar em dispositivos reais: links universais e comportamentos de resolução de links rastreados são mais confiáveis para validação em dispositivos físicos do que em simuladores.
- Validar o roteamento do lado do aplicativo: se o deep link não abrir a tela esperada, valide o roteamento do lado do aplicativo e o formato de URL (host/caminho/consulta e codificação de URL).
- Lembre-se da inicialização do aplicativo: o comportamento Links de Aplicativo/Links Universais é mais confiável depois que o aplicativo é instalado e aberto pelo menos uma vez.
Solução de problemas e perguntas frequentes troubleshooting-faq
- Verifique se a URL corresponde ao host e aos padrões de caminho com os quais seu aplicativo está registrado para lidar, incluindo caminhos de cliques rastreados quando o rastreamento de link está habilitado (por exemplo, caminhos em
/ee/v1/mclick/). - Para links universais do iOS e links de aplicativos do Android, confirme se a associação de domínio (AASA /
assetlinks.json) está configurada e acessível corretamente. - Testar em um dispositivo real (simuladores/emuladores podem se comportar de forma diferente para associação de link).
- Confirme se o roteador do lado do aplicativo analisa corretamente o caminho/consulta do URL.
- Verificar codificação do URL: os caracteres reservados devem ser codificados por URL.
- Valide os nomes e os valores dos parâmetros de acordo com o que o roteador espera.
- Se o mesmo URL HTTPS puder ser fornecido pelo seu site, o link poderá abrir uma página da Web como um fallback quando o aplicativo não estiver instalado (configure o destino e o roteamento da Web de acordo).
-
Crie uma prova com um deep link, clique nela em dispositivos iOS e Android (cenários instalados e não instalados).
-
Validar:
- O valor final do email ou link de SMS (host/caminho/query)
- A associação no nível do sistema operacional (se estiver usando links universais/links de aplicativos)
- O resultado do roteamento no aplicativo
assetlinks.json para cada subdomínio que deve oferecer suporte ao recurso.appname://path)?appname://path), mas a abordagem recomendada é um link universal ou link de aplicativo (https://), que corresponde à configuração baseada em HTTPS nas seções de configuração e implementação desta página.Location quando o aplicativo executa um GET na URL do mclick, para que você possa usá-los para análises no aplicativo./ee/v1/click/ URLs?mclick descrito nesta página.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.