DEEP LINKING Mecanismo para fazer sua aplicação Android responder a links Aspecto prático : conteúdo da aplicação Web está espelhado dentro da aplicação mobile e pode ser endereçado da mesma Objetivo principal : re-engajamento do usuário Outras possibilidades em função de links que apenas só a sua aplicação responda (exemplo : verificação de usuário)
O QUE É UM LINK ? Android oferece suporte "a dois" formatos de links : URIs e URLs Toda URL é uma URI Nem toda URI é uma URL (RFC 3986) Exemplo de URL válida : https://user.content.com/images Exemplo de URI válida : content://user/images
DEEP LINKING 101 1 Decida qual é a URL/URI que determinada tela da sua aplicação (Activity) deve responder 2 Adicione um IntentFilter para cada variante desse link como atributo de resolução implícita no AndroidManifest 4 Aplique lógica adequada partir desses dados 3 Intercepte os dados de interesse a partir do Intent de entrada
THERE IS A LIBRARY FOR THAT ! Orientada por processamento de anotações Adota estratégia de Activity de roteamento (DeepLinkActivity) Suporte a múltiplos URI esquemas e múltiplos links por tela, padrão de launchIntents e mais https://github.com/airbnb/DeepLinkDispatch
Deeplinks representam pontos de entrada na UI adicionais para a aplicação Sua aplicação (re) faz inicializações cross-app de forma desacoplada da UI? Como fica o backstack após o deeplinking? Você é sempre capaz de rotear para uma tela e oferecer bom suporte a Up Navigation? Suas URLs são bem desenhadas e passíveis de parsing? Todo o conteúdo da tela é acessível via dados da URL + WS ? E se não for, como fazer?
INDEXANDO SEU APP Mecanismo para associar o conteúdo da aplicação ao buscador do Google Principais benefícios : Resultados indexados localmente disponíveis via auto-completar na busca do Google Re-engajamento de usuários via integração com resultados de busca do Google, incluindo integrações adicionais (eg AppInstalls)
ASSOCIANDO CONTEÚDOS Ponto de conexão : Deep Links Aplicação Web deve indicar ao Google Crawler quais links são endereçáveis na aplicação móvel Aplicação móvel deve responder aos links determinados como indexáveis, associando o ciclo de vida da tela com o ciclo de visualização do conteúdo
APP INDEXING 101 1 Certifique-se de que cada URL indexada na web e que está associada à aplicação tem o deeplink implementado 2 Obtenha uma instância do cliente GMS (GoogleAPIClient) 3 Usando a API de AppIndexing, vincule o ciclo de visualização de um conteúdo no aplicativo ao link correspondente para cada deeplink
APP LINKS Mecanismo para facilitar integração com deeplinks, disponível a partir do Android Marshmallow Menor fricção entre links da Web e experiência nativa com a remoção do ChooserDialog Deeplinks ainda precisam ser tratados manualmente dentro da aplicação Representa uma tendência para adotar o esquema HTTP como padrão na mecânica de deeplinking
LOGÍSTICA DO APP-LINKING PACKAGE MANAGER INTENT VERIFIER WEB SERVER HTTP CACHE INTENT_FILTER_NEEDS_VERIFICATION pkg:com.myapp.etc.android VERIFIED HTTP GET statements.json HTTP 200 OK DEVICE
MAIS DETALHES Verificação falha com timeout de 5s contra o web server ou por falha de conectividade Resultado respeita mecanismo de HTTP Caching (max-age, etags, etc), apenas para status 200 JSON de validação deve ser acessível de ambos os hostnames Novas verificações a princípio serão realizadas apenas mediante updates ou re-instalações da aplicação
USER ATTRIBUITION Mecanismo para identificar o usuário após a uma instalação bem sucedida da aplicação Fundamental para entender em quais canais vale a pena investir por crescimento não-orgânico Normalmente melhor implementado por ferramentas dedicadas, que oferecem garantia de procedêndia dos dados de atribuição Em geral integrado em ferramentas de Analytics (redundância)
DEFERRED DEEP LINKING Extensão da atribuição de usuário Em geral implementado por ferramentas dedicadas em conjunto com mecanismo de deeplink customizado Ótima experiência inicial para usuário não-orgânico
CONCLUSÕES Deeplinks são a ponte entre aplicações web e mobile Usuário quer o mesmo conteúdo, independente de plataforma Integrações com links diminuem a fricção e melhoram a experiência do usuário como um todo Deeplinking e AppIndexing ajudam no re-engajamento de usuários