Deep linking é a prática de usar um link que abre uma tela específica dentro de um aplicativo móvel, em vez da tela inicial do app ou de uma página web. Um deep link (muitas vezes escrito como uma só palavra, "deeplink") é o link em si: uma URL que carrega informação suficiente para o celular abrir o app certo e para o app mostrar o conteúdo certo.
Veja a diferença na prática, usando um app de receitas fictício:
| Link | O que acontece quando você toca nele |
|---|---|
https://apps.apple.com/app/id0000000000 | Abre a página do app na loja. Nada acontece dentro do app. |
https://recipes.example.com/ | Abre a página inicial do site em um navegador. |
https://recipes.example.com/recipes/lemon-tart | Com o deep linking configurado, abre o app diretamente na receita de torta de limão. Sem o app, abre a mesma receita no site. |
recipeapp://recipes/lemon-tart | Abre o app na receita de torta de limão, mas só se o app estiver instalado. |
As duas últimas linhas são deep links.
O que é deep linking e o que significa "deeplink"?
Na web, cada página tem seu próprio endereço. Os apps não começaram assim: tocar no ícone de um app abre a porta da frente, e o usuário encontra o caminho sozinho a partir dali. O deep linking dá às telas dentro de um app seus próprios endereços. "Deep" (profundo) se refere ao destino, um conteúdo que fica além da tela inicial. Deep link e deeplink significam o link, e deep linking é a técnica.
Um deep link tem duas tarefas:
- Fazer o celular abrir o app certo. O sistema operacional precisa reconhecer que essa URL pertence ao seu app e não ao navegador.
- Dizer ao app para onde ir. O caminho e os parâmetros da URL (por exemplo
/recipes/lemon-tartou?code=SPRING) dizem ao seu app qual tela mostrar e quais dados carregar.
O iOS e o Android cuidam da primeira tarefa. A segunda é sempre o seu próprio código: o app recebe a URL, lê e navega.
Como os deep links funcionam no iOS?
O iOS oferece duas formas de fazer um link abrir o seu app: esquemas de URL personalizados e Universal Links.
Esquemas de URL personalizados
Um esquema de URL personalizado é um prefixo que você inventa e registra para o seu app, como recipeapp://. Qualquer link que comece com esse prefixo é entregue ao seu app.
Os esquemas personalizados são rápidos de configurar, mas limitados. A documentação da Apple sobre como definir um esquema de URL personalizado diz que os esquemas personalizados são "uma forma aceitável de deep linking", mas que os universal links são "fortemente recomendados". Dois motivos se destacam:
- Nada impede outro app de registrar o mesmo esquema. Se dois apps o reivindicarem, a Apple diz que o app que o sistema escolhe é indefinido.
- Uma URL de esquema personalizado não é um endereço web, então não há nada para servir de alternativa. Se o app não estiver instalado, o link falha, e no iOS o usuário pode ver um erro dizendo que o Safari não consegue abrir a página.
Universal Links
Um Universal Link é um link https:// comum para o seu próprio site que o iOS abre no seu app. O guia da Apple sobre como permitir que apps e sites criem links para o seu conteúdo descreve o comportamento: quando alguém toca em um universal link, o sistema o envia diretamente para o seu app sem passar pelo navegador, e se a pessoa não tiver instalado o seu app, a mesma URL abre no navegador para que o seu site possa tratá-la. Uma única URL funciona para os dois casos.
Para provar que o app e o site pertencem ao mesmo dono, você configura uma associação de mão dupla:
- No seu site, você hospeda um arquivo chamado
apple-app-site-associationno diretório.well-known. Ele lista o identificador do seu app e os caminhos de URL que o app trata. - No seu app, você adiciona a capability Associated Domains no Xcode com uma entrada como
applinks:recipes.example.com.
Quando o app é instalado, o iOS baixa o arquivo e verifica se os dois lados coincidem. Os detalhes estão no guia da Apple sobre suporte a domínios associados.
Como os deep links funcionam no Android?
O Android usa as mesmas duas ideias, ambas construídas sobre filtros de intent.
Filtros de intent e esquemas personalizados
Um filtro de intent é uma entrada no AndroidManifest.xml do seu app que diz ao Android quais links uma activity pode abrir. O guia do Google sobre como criar deep links lista o que o filtro precisa: a ação VIEW, as categorias DEFAULT e BROWSABLE (sem BROWSABLE, um link tocado em um navegador não consegue chegar ao seu app) e uma ou mais tags <data> descrevendo as URLs, com pelo menos um esquema.
Um filtro com o esquema recipeapp faz com que links recipeapp://... abram o seu app. Você também pode declarar links https dessa forma, mas o Google observa que os deep links simples estão sujeitos à caixa de diálogo de desambiguação do sistema, o aviso "Abrir com" que pede ao usuário para escolher entre o seu app e outros apps capazes de tratar o link.
Android App Links
Os Android App Links são a versão verificada, e o equivalente no Android aos Universal Links. De acordo com a documentação de App Links do Google, eles estabelecem uma associação confiável entre o seu app e o seu site, de modo que os links verificados abrem no seu app imediatamente, sem caixa de diálogo. Eles são compatíveis com o Android 6 e versões posteriores, em dispositivos que têm os serviços do Google.
A configuração espelha a do iOS:
- Adicione
android:autoVerify="true"ao filtro de intent dos seus linkshttps. - Hospede um arquivo Digital Asset Links em
https://your-domain/.well-known/assetlinks.jsonque indique o seu app e o certificado de assinatura dele.
Quando o app é instalado, o Android busca o arquivo de cada domínio presente nos seus filtros de intent e o verifica. Se a verificação não passar, seus links continuam funcionando como deep links comuns, mas podem abrir o navegador ou mostrar o seletor.
Quais são os principais tipos de deep links?
| Tipo | Aparência | Se o app estiver instalado | Se o app não estiver instalado |
|---|---|---|---|
| Esquema de URL personalizado (iOS e Android) | recipeapp://recipes/lemon-tart | Abre o app | Falha, muitas vezes com um erro |
| Universal Link (iOS) | https://recipes.example.com/recipes/lemon-tart | Abre o app diretamente | Abre a página web |
| App Link (Android) | https://recipes.example.com/recipes/lemon-tart | Abre o app diretamente, sem seletor | Abre a página web |
| Deferred deep link | Geralmente um link https:// de uma plataforma de links | Abre o app na tela certa | Envia o usuário para a loja e depois entrega o destino na primeira abertura |
| Deep link contextual | Qualquer um dos anteriores mais parâmetros, como ?ref=MIKEYB | Abre o app e repassa os dados extras | Depende do tipo de base |
Universal Links e App Links não são algo separado dos deep links. Eles são a forma recomendada de criá-los em cada plataforma. "Deferred" e "contextual" descrevem o que um link consegue fazer, então um único link pode ser um Universal Link, deferred e contextual ao mesmo tempo.
Para ver as vantagens e desvantagens em mais detalhes, confira nossa comparação entre deep links, Universal Links e deferred deep links.
O que é deferred deep linking e quando você precisa dele?
Deferred deep linking é o deep linking que sobrevive a uma instalação. Se a pessoa que toca no link ainda não tem o app, ela é enviada primeiro para a App Store ou o Google Play, e o destino original é entregue ao app na primeira vez em que ele é aberto. O link é "deferred" (adiado) porque sua tarefa fica adiada até depois do download.
Nem os Universal Links nem os App Links fazem isso sozinhos. Os dois recorrem ao site quando o app não está presente, e depois de uma instalação o app abre na tela inicial sem nenhuma memória do link.
Como funciona um deferred deep link
- O usuário toca no link. Ele vai para um servidor operado por você ou pela sua plataforma de links, que registra o destino e os parâmetros.
- O servidor verifica o dispositivo. Se o app estiver instalado, o link o abre diretamente. Se não, o usuário é redirecionado para a loja correta.
- O usuário instala o app e o abre.
- Na primeira inicialização, um SDK no app pergunta qual link levou a essa instalação e recebe o destino e os parâmetros.
- Seu app leva o usuário até essa tela.
O passo 4 é a parte difícil, e ele muda de acordo com a plataforma. No Android, o Google Play oferece a Play Install Referrer API, que permite a um app recuperar a URL de referência da sua própria instalação, junto com os horários em que o clique aconteceu e em que a instalação começou. No iOS, a App Store não entrega uma string de referência ao app da mesma forma, então as plataformas de links guardam os detalhes do link em seus próprios servidores e os devolvem quando o app recém-instalado faz contato.
Quando você precisa de um
Você precisa de deferred deep linking quando muitas das pessoas que tocam nos seus links ainda não têm o app, e quando o lugar onde elas chegam depois de instalar muda o resultado:
- Links de indicação e de convite. O novo usuário deve ver quem o convidou e receber a recompensa.
- Links de afiliados e de criadores. A venda precisa ser creditada à pessoa que compartilhou o link.
- Promoções e conteúdo compartilhado. Quem tocou em um link para uma oferta, um produto ou um artigo específico deve chegar a ele depois de instalar.
Se os seus links só vão para usuários existentes, os Universal Links e App Links padrão são suficientes. Nosso guia sobre deferred deep links para marketing de apps aborda os casos de uso de marketing com mais profundidade.
Por que os deep links quebram?
Os deep links dependem de que o seu site, o seu app e o sistema operacional estejam de acordo, então há vários pontos em que eles podem falhar.
O arquivo de associação está ausente ou errado
A maioria das falhas de Universal Links e App Links remonta ao arquivo no seu servidor web. A Apple afirma que o arquivo apple-app-site-association deve ser servido por https:// com um certificado válido e sem redirecionamentos. A Apple também exige que cada subdomínio tenha sua própria entrada e sirva seu próprio arquivo. No Android, uma impressão digital de certificado errada no assetlinks.json é uma causa frequente.
A verificação não passou no Android
Quando a verificação do App Link não dá certo, o Android trata seus links como links web comuns, então o usuário recebe o navegador ou um seletor. A documentação do Google observa que, no Android 11 e versões anteriores, o sistema só torna o seu app o gerenciador padrão se encontrar um arquivo correspondente para cada host do manifesto, então um único domínio mal configurado pode afetar os demais.
O toque aconteceu em um lugar onde os links se comportam de outro jeito
A Apple documenta um caso surpreendente: quando um usuário está navegando no seu site pelo Safari e toca em um universal link para o mesmo domínio, o iOS o mantém no Safari, partindo do princípio de que ele quer continuar no navegador. Links para um domínio diferente abrem o app. O comportamento também pode mudar quando um link é aberto dentro do navegador embutido de outro app, ou quando uma ferramenta de e-mail reescreve o seu link para passar pelo próprio domínio de contagem de cliques, porque o domínio aberto deixa de ser aquele associado ao seu app. Teste os links nos lugares onde o seu público realmente vai tocar neles.
O app abre, mas cai na tela inicial
O sistema operacional fez a parte dele e o seu app não. Ou o app não trata esse caminho de URL, ou o handler roda antes de o app estar pronto para navegar (por exemplo, antes de o usuário fazer login). Guarde o destino até que o app consiga mostrá-lo.
O que faz uma plataforma de deep linking?
Uma plataforma de deep linking é um serviço que cria e gerencia deep links para você, de modo que um único link se comporte corretamente em todos os dispositivos. Os Insert Links, os deep links integrados ao Insert Affiliate, são um exemplo, e Branch e AppsFlyer são outros dois. Você pode criar um deep linking básico por conta própria com os recursos acima. Uma plataforma se justifica quando você precisa do que os sistemas operacionais não oferecem:
- Um link para todos os casos. A plataforma detecta iOS ou Android, app instalado ou não, e encaminha de acordo.
- Deferred deep linking. Ela armazena os detalhes do link no momento do toque e os devolve ao app na primeira abertura, por meio do seu SDK.
- Arquivos de associação hospedados. Ela serve os arquivos
apple-app-site-associationeassetlinks.jsonem um domínio de links, para que você não precise mantê-los. - Parâmetros e relatórios. Ela carrega dados de campanha, de indicação ou de afiliado ao longo da instalação e gera relatórios de cliques e aberturas.
Onde isso se encaixa nos links de afiliados para apps
Um criador compartilha um link, um seguidor toca nele, instala o app e assina alguns dias depois. A menos que o identificador do afiliado acompanhe a instalação, ninguém consegue dizer quem ganhou a comissão.
O Insert Affiliate resolve isso com seus próprios deferred deep links, chamados Insert Links. Cada afiliado recebe um link que detecta se o usuário está no iOS ou no Android e se o app já está instalado. Se estiver, o link abre o app e credita as vendas futuras a esse afiliado. Se não estiver, o usuário vai para a App Store ou o Google Play, e na primeira abertura o SDK recupera qual afiliado o indicou. Os Insert Links podem funcionar apenas com um esquema de URL personalizado, com Universal Links e App Links como uma melhoria opcional e recomendada. O guia de configuração dos Insert Links explica cada etapa. Se você já usa Branch, AppsFlyer ou outra plataforma de deep linking, o Insert Affiliate consegue ler o afiliado a partir desses links, então você não precisa substituir nada.
Perguntas frequentes
Qual é a diferença entre um deep link e um link normal?
Um link normal abre uma página web em um navegador ou, na melhor das hipóteses, abre um app na tela inicial. Um deep link abre uma tela específica dentro de um app, como um produto, um perfil ou uma oferta. Os melhores deep links também são links https:// comuns, então uma única URL atende tanto o app quanto o site.
Qual é a diferença entre deep linking e deferred deep linking?
O deep linking padrão só funciona quando o app já está instalado. O deferred deep linking também funciona para quem não tem o app: ele envia a pessoa para a loja e depois entrega o destino original quando ela abre o app pela primeira vez. Você precisa dele para links de indicação, de afiliados e de publicidade.
Universal Links e App Links são a mesma coisa?
Eles fazem o mesmo trabalho em plataformas diferentes. Os Universal Links são os deep links https:// verificados da Apple para iOS, e os App Links são o equivalente do Google para Android. Ambos dependem de um arquivo no seu site que prova que você é dono do domínio e do app, e a maioria dos apps configura os dois.
Eu preciso de uma plataforma de deep linking?
Nem sempre. Se você só precisa de links que abram um app instalado na tela certa, os Universal Links e App Links dão conta sem nenhum terceiro. Uma plataforma passa a valer a pena quando você precisa de deferred deep linking, de um único link que encaminha conforme o dispositivo ou de dados carregados ao longo da instalação, porque os sistemas operacionais não oferecem isso de forma nativa.
Por onde começar
Se o seu app ainda não tem deep links, escolha as poucas telas a que as pessoas mais precisam chegar, dê a elas URLs https:// limpas e configure Universal Links e App Links com uma alternativa na web. Adicione o deferred deep linking quando começar a enviar links para pessoas que não têm o app, que é quando os programas de indicação e de afiliados começam. O Insert Affiliate é gratuito para começar, caso você queira que esses links paguem comissão sobre as compras que geram.
