Deep Link: o que é, tipos de links e princípio de funcionamento

Autor: IT Sectr Publicado: 2026-05-14 Tempo de leitura: 9 min

Um Deep Link (link profundo) é uma URL que direciona o usuário para uma tela ou conteúdo específico dentro de um aplicativo móvel, ignorando a tela inicial. Ao contrário de um link comum para um site, um deep link ativa o aplicativo e abre imediatamente o conteúdo alvo. De acordo com Android Developers, deep links configurados corretamente aumentam a conversão na ação alvo em 30–50% ao reduzir o número de etapas para alcançar o conteúdo.

Pontos principais

  • Deep Link — uma URL que abre uma tela específica do aplicativo, não a página inicial
  • Esquema URI (myapp://profile/123) — o método clássico de deep link, funciona em ambas as plataformas
  • Deferred Deep Link — um link que é ativado após a instalação do aplicativo, transmitindo contexto
  • Universal Link (iOS) e App Link (Android) — evolução dos deep links com verificação de domínio
  • Deep Link contextual — transmite parâmetros adicionais: código promocional, referenciador, fonte de tráfego

Um Deep Link (link profundo) é um URI que, ao ser clicado, abre não uma página da web, mas uma tela específica dentro de um aplicativo móvel. A tecnologia resolve um problema fundamental das plataformas móveis: o navegador não pode abrir diretamente uma tela do aplicativo, e um deep link cria uma ponte entre a web e o código nativo. Sem um deep link, o usuário sempre chega à tela inicial e é forçado a navegar manualmente até o conteúdo desejado.

A arquitetura de um deep link consiste em duas partes: o esquema (scheme) determina qual aplicativo deve processar o link, e o caminho (path) aponta para um recurso específico dentro do aplicativo — um produto, artigo, perfil de usuário ou seção de configurações. Os parâmetros de consulta (?source=push&campaign=summer) transmitem contexto adicional para análise, personalização e atribuição de campanhas.

É importante distinguir entre um deep link e um link comum. Um link comum (https://example.com/product/42) abre no navegador e leva à versão web de uma página. Um deep link (myapp://product/42), se o aplicativo estiver instalado, abre a tela nativa com o mesmo conteúdo, mas se o aplicativo não estiver instalado, mostra um erro. Universal Link (iOS) e App Link (Android) foram criados precisamente para resolver o problema de fallback perfeito.

Tarefas diferentes exigem tipos diferentes de deep links. Alguns links funcionam apenas com o aplicativo instalado, outros podem aguardar a instalação, e outros transmitem contexto analítico. A escolha do tipo depende do caso de uso: campanha publicitária, notificação push, compartilhamento de conteúdo ou boletim informativo por e-mail.

Deep Link padrão (Standard Deep Link)

Um Standard Deep Link é o tipo básico que é acionado apenas se o aplicativo já estiver instalado no dispositivo. O usuário clica em um link myapp://product/42, o sistema detecta o esquema registrado e abre o aplicativo na tela desejada. Se o aplicativo não estiver instalado, o navegador mostra um erro “Página não encontrada” ou simplesmente não faz nada. Este tipo é adequado para navegação interna dentro de um aplicativo já instalado.

Configurar um deep link padrão é simples: basta registrar o esquema URI no manifesto (Android) ou Info.plist (iOS). Não é necessária validação do servidor ou certificados SSL. No entanto, precisamente devido à falta de fallback, este tipo é considerado obsoleto para campanhas de marketing — a perda de tráfego de usuários sem o aplicativo pode chegar a 60%.

Deferred Deep Link (link profundo adiado)

Um Deferred Deep Link resolve o principal problema dos deep links comuns: funciona mesmo se o aplicativo não estiver instalado. O usuário clica em um link → vê uma página (landing page ou App Store/Google Play) → instala o aplicativo → na primeira inicialização, o aplicativo recebe o contexto do link original e abre a tela desejada. A tecnologia requer um SDK intermediário (AppsFlyer, Branch, Adjust) que armazena o contexto no servidor até a primeira inicialização.

Branch é uma das plataformas mais populares para deferred deep links. Ela fornece um único link que funciona em todas as plataformas: detecta o SO do usuário, redireciona para a loja de aplicativos e, após a instalação, transmite o contexto (código promocional, ID do produto, fonte da campanha). De acordo com a Branch (2024), os deferred deep links aumentam a conversão de campanhas publicitárias em 40–70%.

Contextual Deep Link (link profundo contextual)

Um Contextual Deep Link é um deep link comum ou adiado complementado com parâmetros de contexto: fonte de tráfego, campanha, código promocional, referenciador, ID do parceiro. Os parâmetros são transmitidos na URL e processados pelo aplicativo para personalização: mostrar um bônus de boas-vindas, abrir um produto com desconto, registrar análise de instalação.

As tags UTM (utm_source, utm_medium, utm_campaign) são uma forma padrão de transmitir contexto. No ambiente móvel, os deep links contextuais são críticos para atribuição: sem eles, o proprietário do aplicativo não sabe qual canal trouxe o usuário — tráfego orgânico, anúncios do Facebook, boletim por e-mail ou código QR. A atribuição de qualidade requer integração com um MMP (Mobile Measurement Partner).

Tipo de Deep LinkRequer instalaçãoAguardar instalaçãoContexto
PadrãoSimNãoApenas na URL
AdiadoNãoSimArmazenamento no servidor
ContextualQualquerQualquerUTM + parâmetros

iOS suporta deep links através de dois mecanismos: o antigo Custom URL Scheme e o moderno Universal Link (iOS 9+). O Custom URL Scheme funciona registrando um esquema personalizado no Info.plist. O aplicativo registra myapp://, e o iOS abre o aplicativo ao clicar nesse link. O problema: se o esquema não estiver registrado por nenhum aplicativo, o navegador mostra um erro.

O tratamento de deep links no iOS ocorre através do método AppDelegate application(_:open:options:) ou SceneDelegate scene(_:openURLContexts:). O desenvolvedor extrai a URL, analisa o caminho e os parâmetros, e então navega para a tela apropriada. Se o SwiftUI for usado, o tratamento é feito através de OpenURLAction ou onChange(of: openURL). É importante tratar corretamente o estado do aplicativo: o aplicativo pode não estar iniciado, em segundo plano ou ativo.

A segurança no iOS é rigorosa: qualquer aplicativo pode interceptar um Custom URL Scheme registrando o mesmo esquema. Esta é uma vulnerabilidade potencial (sequestro de esquema URL). Portanto, a Apple recomenda o Universal Link como uma alternativa mais segura: apenas o proprietário verificado do domínio pode associar links ao aplicativo. Saiba mais sobre o Universal Link no artigo Universal Link.

Android implementa deep links através de Intent Filters no AndroidManifest.xml. O aplicativo define uma Activity que trata um esquema específico (myapp://) ou hosts e caminhos específicos. Quando o usuário clica em um deep link, o Android procura uma Activity com um Intent Filter correspondente e a abre. Se houver várias Activities correspondentes, o sistema mostra um diálogo de seleção de aplicativo.

xml
// AndroidManifest.xml - Intent Filter para Deep Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

O tratamento de deep links no Android é feito no método Activity.onCreate() ou onNewIntent(). O desenvolvedor recebe o Intent, extrai o URI e executa a navegação. Para o Jetpack Navigation, o componente Navigation Deep Link permite descrever declarativamente os deep links no gráfico de navegação. O Android App Link (Android 6.0+) é uma evolução dos deep links com verificação através de Digital Asset Links, eliminando o diálogo de seleção de aplicativo.

É importante considerar as mudanças do Android 12+: a partir da API 31, o sistema exige a declaração explícita de exported=true para Activities que tratam deep links e verifica a correção do Intent Filter. O Google Play Store verifica a verificação do App Link durante a publicação. Sem verificação, o Google pode rejeitar a atualização se os deep links levarem a páginas inexistentes do site.

A configuração de deep links inclui várias etapas comuns a ambas as plataformas. O primeiro passo é definir o esquema e a estrutura da URL. Recomenda-se usar o esquema https (em vez de um personalizado) para compatibilidade com Universal Link e App Link. A estrutura da URL deve espelhar a estrutura do site: /product/42, /profile/john, /settings/notifications. Isso simplifica a manutenção e a indexação de conteúdo pelos motores de busca.

A segunda etapa é o tratamento de deep links no código do aplicativo. Para Android, recomenda-se o Jetpack Navigation com deep links declarativos no nav_graph. Para iOS — SwiftUI NavigationStack com tratamento OpenURLAction. É importante tratar três estados do aplicativo: inicialização a frio (aplicativo não iniciado), inicialização a quente (em segundo plano) e ativo (na tela). Cada estado requer uma lógica de navegação diferente.

  • Definir o esquema e a estrutura da URL (myapp:// ou https://your.domain/)
  • Registrar o esquema no manifesto (Android) ou Info.plist (iOS)
  • Implementar o tratamento na Activity ou AppDelegate/SwiftUI
  • Configurar o fallback para o caso de o aplicativo não estar instalado
  • Testar os três estados: inicialização a frio, inicialização a quente, ativo

O teste de deep links é uma tarefa separada. O Android Studio fornece a ferramenta App Links Assistant para verificar Intent Filters. No iOS, o teste é feito através do Xcode passando uma URL por meio de argumentos do esquema de inicialização. Recomenda-se configurar uma verificação de CI: navegação automática por deep link e verificação de que a tela esperada foi aberta. Para deferred deep links, o teste inclui o ciclo completo de “instalação → primeira inicialização → contexto”. Sem testes, os deep links frequentemente quebram quando a navegação do aplicativo é atualizada.

Perguntas frequentes

Como um deep link difere de um link comum?

Um link comum (https://site.com/page) abre no navegador. Um deep link (myapp://page ou https://site.com/page com verificação) abre uma tela dentro de um aplicativo móvel. Um deep link também pode transmitir contexto: código promocional, fonte de tráfego, ID do referenciador.

O que é um esquema URI e para que serve?

Um esquema URI é um prefixo de URL que determina qual aplicativo deve processar o link (por exemplo, myapp://, vk://, tg://). O sistema usa o esquema para roteamento: encontra o aplicativo que registrou este esquema e passa a URL para ele processar.

Como funciona um deferred deep link?

O usuário clica em um link → o serviço (Branch, AppsFlyer) lembra o contexto → redireciona para a App Store/Google Play → após a instalação e primeira inicialização, o SDK passa o contexto salvo para o aplicativo → o aplicativo abre a tela desejada, como se o usuário já tivesse o aplicativo instalado.

Pode-se usar um deep link sem ter o aplicativo instalado?

Um deep link comum — não. Um deferred deep link — sim, através de uma página intermediária que redireciona para a loja de aplicativos e salva o contexto. Universal Links e App Links abrem o site como fallback se o aplicativo não estiver instalado.

Como testar deep links em dispositivos reais?

No Android, use adb: adb shell am start -W -a android.intent.action.VIEW -d “myapp://product/42”. No iOS — xcrun simctl openurl booted “myapp://product/42”. Os consoles de teste do Firebase Dynamic Links e Branch estão disponíveis para ambas as plataformas.

Resumo

  • Deep Link — uma URL que abre uma tela específica do aplicativo, não a página inicial ou site
  • Três tipos — Padrão (apenas com aplicativo instalado), Adiado (com espera de instalação), Contextual (com parâmetros UTM)
  • Custom URL Scheme (myapp://) — método simples, mas sem fallback quando o aplicativo está ausente
  • Universal Link e App Link — evolução dos deep links com verificação de domínio e fallback no navegador
  • iOS trata deep links via AppDelegate/SceneDelegate, Android — via Intent Filter
  • Deferred Deep Link requer um SDK intermediário (Branch, AppsFlyer) para armazenar contexto antes da instalação
  • Testar os três estados (frio, quente, ativo) é uma etapa obrigatória na configuração de deep links

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também