Como criar Deep Links com DyLy

DyLy é um serviço que encurta URLs e facilita a criação de Deep Links.
Neste artigo, mostramos como criar Deep Links de maneira eficiente com DyLy.
O que é um Deep Link
Um Deep Link permite abrir o aplicativo diretamente, em vez do navegador, ao acessar um link. Se o app não estiver instalado, o usuário é direcionado para a loja e, após a instalação, a página desejada é aberta.
A Apple oferece suporte oficial à "transição contínua do navegador para o app" por meio do Universal Links, enquanto o Google proporciona experiência semelhante com o Android App Links. Como mencionam o guia de Universal Links da Apple e a documentação de Android App Links do Google, Deep Links melhoram a experiência do usuário, reforçam a segurança e aumentam a taxa de conversão.
Casos de uso
Deep Links podem ser usados de muitas maneiras.
Links diretos para conteúdo (vídeos etc.)
Você pode compartilhar um link nas redes sociais e levar o usuário diretamente a um conteúdo específico. Na web isso é comum; com Deep Links, apps móveis também podem abrir conteúdo interno instantaneamente. É possível ainda adicionar parâmetros de consulta para medir o canal de origem e outras métricas.
Links de convite
Deep Links permitem convidar alguém para um grupo ou outro espaço dentro do app. Quando o convidado clica no link, o aplicativo abre e o fluxo de convite começa. Se o app não estiver instalado, o usuário vai para a loja, e após instalar o fluxo continua.
Redirecionamentos
Ao definir um app como destino de redirecionamento em um fluxo OAuth, é possível usar um esquema personalizado (por exemplo, myapp://), mas isso pode expor informações a interceptações. Com Deep Links, o redirecionamento é recebido com segurança dentro do aplicativo.
Implementação
Veja a seguir como implementar Deep Links na prática. Existem vários serviços; aqui usaremos DyLy.
Criar metadados
É necessário vincular o domínio ao aplicativo. Confira os detalhes na documentação oficial da Apple e na documentação oficial do Google. Em resumo, basta hospedar na web um endpoint que comprove a posse do domínio e a associação com o app, permitindo que Apple e Google façam a verificação.
Para isso, basta retornar um JSON no formato exigido. Você pode hospedá-lo em serviços como S3, mas o DyLy oferece um recurso que simplifica essa tarefa.
O DyLy permite criar um JSON link, que retorna exatamente o JSON definido no destino do link. Use a API para enviar uma solicitação como a seguir.
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "json",6 "projectId": "your-project-id",7 "path": ".well-known/apple-app-site-association",8 "rawJson": {9 "applinks": {10 "apps": [],11 "details": [12 {13 "appIDs": ["TEAM123.com.example.app"],14 "paths": [15 "NOT /_/*",16 "NOT /deferred-params",17 "/*"18 ]19 }20 ]21 }22 }23 }'Configuração no app
Configure então seus aplicativos conforme os passos de cada sistema operacional.
iOS
No Xcode, adicione Associated Domains em Signing & Capabilities e registre o domínio, como applinks:example.com.
Android
Adicione <intent-filter android:autoVerify="true"> em AndroidManifest.xml e use android:autoVerify para validar o domínio.
Se o acesso ocorrer via navegador, configure o link para redirecionar para qualquer URL desejada.
Criar o link
Por fim, crie o link no DyLy.
Defina type como deep para gerar um Deep Link como o exemplo.
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \3 -H "Content-Type: application/json" \4 -d '{5 "type": "deep",6 "projectId": "your-project-id",7 "path": "groups/awesome-group",8 "destinationUrl": "https://apps.apple.com/app/yourapp/id123456",9 "jwtClaims": {10 "invitationId": "inv-789xyz",11 "invitedBy": "user-123",12 "groupId": "awesome-group",13 "groupName": "Awesome Group",14 "permissions": "member",15 "timestamp": 173589440416 },17 "jwtExpiresIn": 300,18 "expiresIn": 2592000,19 "keyProtected": false,20 "oneTime": false21 }'Os valores em jwtClaims são incluídos no JWT, portanto trate-os com cuidado.
Depois de criar o Deep Link, o DyLy gera um link que inclui um JWT como parâmetro de consulta.
Como tratar o link no aplicativo
Quando o usuário clicar no link, o aplicativo irá recebê-lo. Siga as etapas abaixo para processá-lo.
Verificar o JWT
Confirme se o link foi realmente emitido pelo DyLy.
Antes disso, vale relembrar rapidamente o que é um JWT. Um JWT é, em resumo, um JSON assinado. Ao verificar a assinatura, você confirma o emissor e garante que o conteúdo não foi alterado.
Como qualquer pessoa pode gerar um link, é preciso identificar os que não são legítimos. Links oficiais são assinados com a chave privada do DyLy; verificando a assinatura, o app confirma que o link é autêntico e que os parâmetros não foram adulterados.
DyLy usa a tecnologia JWT, bastante difundida, permitindo aproveitar bibliotecas existentes para validar a assinatura.
Por isso, o aplicativo deve primeiro validar o JWT ao receber o link.
Analisar os parâmetros
Depois da validação, extraia os parâmetros e execute o processamento necessário.
Em um link de convite, por exemplo, você pode obter o ID do grupo ou outros identificadores.
Lembre-se de que, apesar de o JWT ser assinado, seu conteúdo não é criptografado (há JWTs criptografados, mas é um formato diferente).
Isso significa que qualquer um pode ler o conteúdo do JWT. Portanto, não armazene informações sensíveis ou pessoais no token. No caso do convite, limite-se a incluir identificadores como o ID do grupo e mantenha dados detalhados no servidor.
Deferred Deep Link
Quando o usuário clica no link em um dispositivo sem o app instalado, ele é redirecionado para a loja e, após a instalação, pode abrir a página desejada pelo Deep Link. Esse mecanismo é conhecido como Deferred Deep Link. DyLy também oferece suporte a ele.
Primeiro, o usuário toca no link em um dispositivo móvel sem o app. Como o aplicativo não está disponível, o link roda no navegador e chega ao servidor do DyLy. DyLy registra informações como endereço IP e sistema operacional e, em seguida, redireciona o usuário para a loja.
Quando o app inicia pela primeira vez após a instalação, consulta o DyLy para saber se o dispositivo acessou o link antes. Com base no IP e no sistema operacional da requisição, DyLy verifica se houve um acesso prévio e, caso positivo, retorna o Deep Link correspondente ao aplicativo.
Assim, o app consegue recuperar as informações do Deep Link no primeiro lançamento após a instalação.
Para mais detalhes, consulte a documentação oficial do DyLy.
Resumo
DyLy torna simples a implementação de Deep Links. No próximo artigo vamos nos aprofundar em links de convite e outros cenários concretos.




