Tudo sobre deep linking para aplicativos mobile
Zhiyi Huang, Backend Developer, Adjust, 24 de jan. de 2022.
Deep linking em aplicativos mobile é uma tecnologia que abre um aplicativo ou abre uma página específica assim que o usuário clica em uma URL em um site ou em outro aplicativo. Implementar deep links é uma maneira segura de otimizar a experiência do usuário e aumentar sua taxa de conversão. Com isso em mente, veja aqui como criar deep links e outros insights úteis sobre o tema.
Por que você precisa de deep linking?
Digamos que você tenha publicado um aplicativo de música. Para divulgar uma música nova, você pagou rios de dinheiro para executar uma campanha em um site bem conhecido. Na sua campanha, você apresenta uma amostra da música e, provavelmente, você quer que o usuário a ouça dentro do aplicativo ao invés do site, onde ele veria a capa do álbum.
Outro exemplo: digamos que você quer reconquistar usuários inativos usando uma campanha de vendas. Nessa campanha, eles seriam direcionados à página de produtos no seu aplicativo só com um clique, sem ter que procurar manualmente ou digitar um cupom. Esses dois exemplos mostram a importância dos deep links: eles tornam as campanhas possíveis.
O deep linking em aplicativos mobile gera uma experiência do usuário positiva e pode aumentar significativamente sua taxa de conversão e de retenção. Se quiser saber mais sobre esse tema, confira nosso blog post discutindo os efeitos do deep linking em campanhas.
Por que os deep links existem?
Como estávamos dizendo, os deep links fazem com que qualquer jornada entre sites e aplicativos seja bem mais simples para o usuário. Eles também fazem com que os anunciantes tenham mais chances de converter esse usuário.
Por exemplo, vamos pensar que você quer executar uma campanha promovendo presentes de Natal para levar os clientes até o seu aplicativo de e-commerce. Na campanha, você coloca "presentes de Natal" como uma categoria, mostrando uma prévia do estoque, mas você quer que eles vejam os itens no seu aplicativo ao invés do site. É aí que entra o deep linking. Se o usuário já tem o aplicativo instalado, então quando ele clicar no link, o aplicativo vai abrir e (em alguns casos) mostrar diretamente o produto.
A retenção de usuários é um dos focos principais do deep linking. Com ele, você pode fazer com que o usuário fique grudado ao seu aplicativo. Além disso, ele é ótimo para reengajar usuários e, muitas vezes, um componente central nas campanhas de redirecionamento. Por fim, o deep linking é um método versátil para direcionar usuários pelo seu ecossistema, criando uma experiência de um usuário melhor que pode aumentar suas vendas, conversões e taxas de retenção.
Há dois tipos de deep links
Há dois tipos de links: deeplink padrão e deeplink deferred.
Padrão
Os deep links padrão só direcionam o usuário para o aplicativo se este já estiver instalado. Se o aplicativo não estiver instalado, o link não consegue alcançar o endpoint do aplicativo, então uma mensagem de erro é exibida.
Os deep links padrão é útil para campanhas de redirecionamento, nas quais os profissionais de marketing só estão interessados em encontrar usuários que já instalaram o aplicativo para trazê-los de volta.
Deferred
Deeplink deferred é mais complexo que deeplink padrão. Ele pode direcionar o usuário à App ou Play Store se o usuário não tiver o aplicativo instalado (ou a outro lugar, por exemplo, o site do aplicativo para mais informações) e, depois, abrir a página original para a qual o usuário foi direcionado.
Por exemplo, se um usuário baixar um aplicativo de e-commerce após clicar em um anúncio de um par de sapatos, mas não tiver o aplicativo instalado, primeiro ele será enviado à loja para fazer o download. Quando ele abrir o aplicativo após a instalação, a página do produto será mostrada.
Os deferred deep links só são possíveis em soluções de deep linking como a da Adjust. Ele é criado por uma integração do SDK. Para mais informações, clique aqui para Android e aqui para iOS.
E o contextual deep linking?
Talvez você já tenha ouvido falar em "contextual deep linking". Ele se refere a links que, aparentemente, oferecem benefícios adicionais, sendo capazes de armazenar mais informação e possibilitando que os profissionais de marketing tirem mais proveito do seu conteúdo.
Os contextual deep links são deep links padrão ou deferred com parâmetros adicionais que os próprios profissionais de marketing podem adicionar. Eles não existem por si só.
Como criar um deep link
Vamos começar com o básico: gerar um deep link. O processo geralmente está cheio de problemas e vai e vens entre os desenvolvedores e os profissionais de marketing, já que os links devem ser implementados no aplicativo para direcionar o usuário ao destino desejado.
Além disso, a criação manual do deep link pode levar muito tempo. Ela também pode aumentar as chances de ocorrer alguma falha humana no processo. Como qualquer URL, o deep link não funciona se há algum erro de digitação — e mesmo o melhor engenheiro pode errar às vezes. Ter uma solução que cria deep links automaticamente pode acabar economizando tempo e recursos que poderiam ser usados para gastos com a otimização da campanha e da estratégia.
No final das contas, é melhor ter uma ferramenta que é mais fácil de usar e que automatiza o processo de geração de links para aumentar a precisão e minimizar falhas humanas. Saiba mais sobre o Deeplink Generator da Adjust, uma ferramenta que oferece aos profissionais de marketing uma URL de deep link completa, que funciona tanto no App Links (Android) quanto no Universal Links (iOS), reduzindo drasticamente as complicações quando se implementa deep links sozinho.
Tanto o scheme-based deep linking (para Android quanto o do iOS) e iOS 9+ Universal Link estão totalmente documentados e as ideias básicas são bem similares: associar uma URL (para scheme-based, youapp://; para links universais, https://yourdomain.com/) com seu aplicativo. Quando o usuário clica na URL, o sistema abre o aplicativo, caso este esteja instalado.
Só que o mundo não é perfeito. Você deve estar se perguntando o que acontece quando alguém clica em uma URL de deep link, mas não tem o aplicativo instalado. Infelizmente, ou ele vê uma mensagem de erro ou nada acontece. Enquanto não existe uma maneira direta de conferir se o aplicativo está ou não em um dispositivo pela web, há outras maneiras de "sondar" se seu aplicativo está presente e mandar os clientes para a App Store, para o seu site ou qualquer outro destino, quando ele não está.
Como já foi dito, o scheme-based deep linking para aplicativos mobile do Android, do iOS e do iOS 9+ Universal Link estão totalmente documentados, então vamos ver alguns exemplos de como eles funcionam.
Implementação de deep links para Android
Como exemplo de deep linking para Android, vamos pensar que sua URL de deep linking é yourapp://path/ e que seu bundle ID é com.yourapp.example.
Solução com JavaScript
Uma técnica já bem conhecida para resolver esse problema é usar um iframe para carregar a URL de deep link e atrasar o redirecionamento para a loja com JavaScript:
Ao fazer isso, o navegador vai tentar carregar yourapp://path/ first.
- Se seu aplicativo está instalado, então ele será aberto e o JavaScript seguinte não vai executar.
- Se seu aplicativo não está instalado, então nada vai acontecer quando carregar yourapp://path/. Depois de dois segundos, a página vai ser redirecionada pelo JavaScript para a Play Store e o usuário poderá instalar o aplicativo de lá.
Porém, o código acima tem um problema – depois que o aplicativo é aberto e o usuário volta para o navegador, o JavaScript pode continuar e redirecioná-lo de volta à Play Store. Podemos otimizar isso conferindo o momento em que o usuário volta para o navegador para poder determinar se ele precisa ser redirecionado para a loja ou não:
Solução com intent
Desde a versão 25 do Chrome para Android e outras posteriores, o código acima parou de funcionar, conforme a documentação do Chrome. Por sorte, a Google providenciou a URL do intent para uma melhor solução. Quando o usuário clica na URL intent://path/#Intent;scheme=yourapp;package=com.yourapp.example;end, então
- se o aplicativo estiver instalado, ele será aberto pelo Chrome.
- se aplicativo não estiver instalado, o Chrome vai abrir a Play Store.
Qual solução de deep link eu deveria usar?
A solução com intent é altamente recomendada, já que é muito mais fácil de implementar e a experiência do usuário é bem mais fluida. Entretanto, ela requer um suporte do navegador e o sistema do Android é, infelizmente, tão fragmentado que ainda existem vários sistemas operacionais e navegadores antigos por aí. Além disso, o WebView do Android, usado por vários aplicativos, não suporta as URLs do intent por padrão. A tabela a seguir mostra qual solução você deve usar para os navegadores Android:
Navegador | JavaScript | Intent |
---|---|---|
Chrome 24 ou anterior | √ | |
Chrome 25 ou superior | √ | |
Firefox | √ | |
Navegador do Android | √ | |
Navegador in-app do Facebook | √ | |
Navegador in-app do Twitter | √ | |
Outros navegadores | √ |
Implementação do deep link para iOS
Presumindo que a URL do deep link seja yourapp://path/ e o ID do aplicativo na App Store seja 12345678.
Solução com JavaScript
De forma semelhante ao Android, também existe existe um truque de JavaScript para o iOS:
html <script>
window.location.replace("yourapp://path/"); setTimeout(function () {
window.location.replace("https://itunes.apple.com/app/id12345678"); }, 2000);
</script>
- se o aplicativo estiver instalado, o primeiro código de realocação irá abrir o aplicativo e o seguinte script não irá executar.
- se o aplicativo não estiver instalado, o primeiro código de realocação não irá fazer nada e a função de tempo limite irá redirecionar para a App Store.
Conforme descobrimos, esse script funciona bem no iOS 8 ou versões anteriores com o Safari, mas não funciona sempre em outras versões. Esta é a tabela:
Navegador | JavaScript |
---|---|
Safari do iOS 8 ou anteriores | √ |
Chrome do iOS | √ |
Navegador in-app do Facebook do iOS 8 | √* |
Navegador in-app do Twitter do iOS 8 | |
iOS 9 ou superiores |
* funcionando parcialmente dependendo da versão do aplicativo do Facebook
Solução de universal link
Começando pelo iOS 9, a Apple publicou o universal link, o qual funciona de maneira parecida com o intent do Android, mas requer mais preparação. Além disso, desde o iOS 9.2, a solução de JavaScript parou de funcionar, depois que a Apple tornou a janela do prompt não modal.
Para poder ativar os universal links, você precisa de um domínio com certificado SSL (https://yourdomain.com/, por exemplo), associado ao seu aplicativo e oferecer um arquivo no formato JSON em https://yourdomain.com/apple-app-site-association.
Esse arquivo avisa o seu dispositivo qual caminho usar como deep link para cada aplicativo.
No XCode, você precisa inserir applinks:yourdomain.com na sua permissão com.apple.developer.associated-domains:
Um domínio pode estar associado a vários aplicativos e vice-versa.
Em seguida, você precisa adotar os métodos UIApplicationDelegate para a transferência (especificamente o application:continueUserActivity:restorationHandler:) para que o seu aplicativo possa receber um link e lidar com ele da maneira correta.
Vamos pensar que você associou https://yourdomain.com/dress/ ao seu aplicativo ao configurar "paths":[ "/dress/"] no arquivo no formato JSON. Quando o usuário clicar no link https://yourdomain.com/dress/1 dentro do Safari,
- se o aplicativo já estiver instalado, ele irá abrir e o link https://yourdomain.com/dress/1 será levado ao UIApplicationDelegate. Lá você pode configurar qual visualização deseja abrir.
- se o aplicativo não estiver instalado, o link https://yourdomain.com/dress/1 irá abrir com o Safari e você pode ainda exibir o produto no seu site ou redirecionar o usuário para a App Store.
Os universal links parecem a solução perfeita para o iOS, mas, infelizmente, eles também têm as suas limitações:
- Os universal links só funcionam no Safari ou no Chrome.
- Quando outro site faz um redirecionamento com um universal link, ele só funciona se o clique ocorrer dentro do Safari ou do Chrome. Por exemplo, se um link no seu aplicativo de e-mail https://anotherDomain.com/ que está redirecionando para o universal link https://yourDomain.com/dress/1, o deep linking não vai levar até o seu aplicativo. Porém, se o link https://anotherDomain.com for clicado dentro do Safari, aí ele funciona.
- Eles também não funcionam se você inserir o link diretamente no barra de endereços do navegador.
- Os universal links não funcionam se o redirecionamento for ativado pelo JavaScript.
- Os universal links não funcionam quando você abre o link de maneira programática no seu aplicativo (com o openUrl, por exemplo)
Bem-vindo ao mundo dos deep links!
O deep linking para aplicativos mobile é um tema complicado — não existe uma fórmula mágica que funciona em todas as ocasiões. Por sorte, a Adjust vai detectar as principais situações e usar a melhor estratégia possível para fazer o deep linking funcionar.
Temos muito conteúdo sobre deep links para você se atualizar. Primeiro, leia nosso guia de deep linking. Nele, falamos tudo sobre como eles funcionam e o que faz o deep link da Adjust ser diferente dos outros. Também temos várias postagens no blog, como esse guia com a diferença em relação ao Universal linking, e uma visão geral dos seus benefícios. Case se interesse, você também pode conferir nossa documentação sobre o assunto, e ler sobre como implementar universal links facilmente com a Adjust.
Também estamos à disposição para ouvir suas perguntas e questões pela nossa página do suporte.
Saiba em primeira mão. Assine para insights mensais sobre apps.