Crescer
Deep links
Um deep link abre uma tela específica dentro do seu app instalado, como um desafio, um convite de indicação ou a página de um produto. Se o app não estiver instalado, o visitante vai para a loja, exatamente como acontece com o seu link inteligente. Deep links estão disponíveis nos planos Pro, Studio e Vitalício. Universal Links e Android App Links também precisam de um domínio personalizado, que faz parte do Studio.
Como um deep link funciona
Adicione /open/ e o caminho dentro do app ao seu link inteligente. A query string também é repassada:
https://mapps.one/habitly/open/challenges/30-days?ref=newsletter
| Visitante | O que acontece |
|---|---|
| iPhone ou iPad, com um esquema de URL do iOS definido | Uma página curta tenta abrir habitly://challenges/30-days?ref=newsletter. Se o app não estiver instalado, o visitante segue para a App Store. |
| Android ou Huawei, com um nome de pacote definido | Uma página curta abre uma intent do Android para o mesmo caminho, limitada ao seu pacote. O Chrome abre o app se ele estiver instalado e, caso contrário, segue o destino alternativo para o Google Play. |
| Celular ou tablet, sem configurações de deep link para a plataforma dele | Redirecionado direto para o destino alternativo. |
| Computadores e bots | Redirecionados para o link inteligente, com a query string mantida. |
O destino alternativo é para onde o seu link inteligente enviaria aquele dispositivo, seguindo as suas regras de redirecionamento, com as tags UTM repassadas. Se essa plataforma não tiver link da loja, o destino alternativo é a página de destino. Se os deep links não estiverem configurados ou se o plano não os incluir, todos os visitantes são redirecionados para o link inteligente.
Os caminhos podem conter letras, números e os caracteres / _ - . ~ %. Outros caracteres são removidos, então use codificação percentual para todo o resto, como espaços (%20).
Configuração
Abra a aba Deep links do app e preencha os campos das plataformas que você oferece:
| Campo | Exemplo | Usado para |
|---|---|---|
| Esquema de URL do iOS | habitly:// | Abrir o app a partir da página de redirecionamento no iPhone e no iPad |
| Team ID da Apple | A1B2C3D4E5 | Universal Links. O ID de 10 caracteres que aparece em Membership details na sua conta Apple Developer. |
| Bundle ID do iOS | com.habitly.app | Universal Links |
| Nome do pacote Android | com.habitly.app | Abrir o app em dispositivos Android e Huawei |
| Esquema do Android | habitly | O esquema que o seu intent filter trata |
| Impressões digitais de certificado SHA-256 | 14:6D:E9:83:...:44:E5 | Android App Links. Adicione uma ou mais, separadas por vírgulas, espaços ou quebras de linha. |
habitly. Se você deixar em branco, será usado https e a primeira parte do caminho vira o host (https://challenges/30-days). Isso só funciona se o seu intent filter estiver preparado para esse formato.Registre o esquema no seu app
iOS, no Info.plist:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>habitly</string>
</array>
</dict>
</array>
Android, no AndroidManifest.xml:
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="habitly" />
</intent-filter>
</activity>
No seu app, leia a URL recebida, direcione para a tela correspondente e leia os parâmetros de consulta de que você precisar. Envie caminhos desconhecidos para a tela inicial, porque as pessoas editam URLs.
Universal Links e Android App Links
Links com esquema mostram primeiro uma página curta de redirecionamento, e o iOS pode pedir que o visitante confirme. Links verificados pulam essa etapa: quando o app está instalado, o sistema o abre diretamente. A verificação precisa de um domínio que pertença só ao seu app, então ela funciona no seu domínio personalizado. Assim que get.habitly.app estiver conectado, o mapps.one serve os arquivos de associação para você:
| Arquivo | Gerado a partir de |
|---|---|
https://get.habitly.app/.well-known/apple-app-site-association(também em /apple-app-site-association) | Team ID da Apple e bundle ID |
https://get.habitly.app/.well-known/assetlinks.json | Nome do pacote Android e impressões digitais SHA-256 |
O arquivo da Apple cobre todos os caminhos em /open/:
{
"applinks": {
"details": [
{
"appIDs": ["A1B2C3D4E5.com.habitly.app"],
"components": [
{ "/": "/open/*", "comment": "Deep links created with mapps.one" }
]
}
]
},
"webcredentials": { "apps": ["A1B2C3D4E5.com.habitly.app"] }
}
O arquivo do Android:
[
{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.habitly.app",
"sha256_cert_fingerprints": [
"14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"
]
}
}
]
Cada arquivo retorna "404 Not Found" até que os campos dele sejam válidos: um Team ID de 10 caracteres e um bundle ID para a Apple, e um nome de pacote com pelo menos uma impressão digital no formato AA:BB:... (32 pares) para o Android. Use a impressão digital da chave do Play App Signing em Play Console → App integrity, e adicione também sua chave de upload se você testa builds assinados localmente. Os arquivos ficam em cache por uma hora. A Apple também os armazena em cache nos próprios servidores, então reinstale o app para testar alterações.
Configure seu app
iOS: adicione a capability Associated Domains com applinks:get.habitly.app.
Android: adicione um intent filter verificado para o seu domínio:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="get.habitly.app" android:pathPrefix="/open/" />
</intent-filter>
Depois, use links como https://get.habitly.app/open/challenges/30-days nas suas campanhas. Quando o app não está instalado, o navegador carrega a página e o mesmo fluxo de destino alternativo é executado.
mapps.one é compartilhado por muitos apps. Os links em mapps.one/habitly/open/ continuam funcionando por meio da página de redirecionamento. As URLs de deep link exibidas no painel e na API usam mapps.one, então troque o host pelo seu domínio quando quiser links verificados.Análises
Uma abertura é contada em Aberturas de deep link quando um celular ou tablet carrega uma URL /open/ e o mapps.one tenta abrir o app. O redirecionamento para a loja não é contado uma segunda vez. Links verificados que abrem o app diretamente nunca chegam ao mapps.one, então não são contados. Use as análises do seu próprio app para esses casos.