Como criar Deep Links com DyLy

⏱️5 min
Compartilhar:

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.

bash
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.

bash
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": 1735894404
16 },
17 "jwtExpiresIn": 300,
18 "expiresIn": 2592000,
19 "keyProtected": false,
20 "oneTime": false
21 }'

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.

Referências

Compartilhar:

Artigos relacionados

Aplicativo Android CI/CD com Flutter
Guides

Aplicativo Android CI/CD com Flutter

Aprenda a construir pipelines CI/CD para apps Android com Flutter. Baseado em GitHub Actions, sem usar fastlane.

mark241
Como localizar o aplicativo no Flutter
Guides

Como localizar o aplicativo no Flutter

Aprenda a localizar seu aplicativo Flutter usando arquivos arb. Este artigo é baseado no Flutter 2.0.1.

mark241