App Link: o que é, princípio de funcionamento e configuração

Autor: IT Sectr Publicado: 2026-05-14 Tempo de leitura: 9 min

App Link é um mecanismo do Android (Android 6.0+) que abre automaticamente links da web no aplicativo instalado, ignorando a caixa de diálogo de escolha. O termo foi introduzido pelo Google em 2015 junto com o Android 6.0 Marshmallow. De acordo com Android Developers, o App Link usa Digital Asset Links — verificação criptográfica através de um arquivo no servidor, confirmando que o domínio pertence ao desenvolvedor do aplicativo.

Pontos principais

  • App Link — um link https que abre automaticamente o aplicativo sem caixa de diálogo de escolha
  • Digital Asset Links — arquivo JSON assetlinks.json no servidor, verificando a conexão do domínio com o aplicativo
  • Impressão digital SHA256 do certificado — elemento chave de verificação que liga o desenvolvedor ao domínio
  • Intent Filter — componente Android que declara quais links o aplicativo manipula
  • Segurança — App Link elimina a caixa de diálogo “Abrir no aplicativo ou navegador”, aumentando a conversão

App Link (Android App Link) é um link HTTPS padrão que, ao ser clicado em um dispositivo Android, abre automaticamente o aplicativo instalado sem mostrar a caixa de diálogo padrão de escolha entre navegador e aplicativo. O Google introduziu o App Link no Android 6.0 (API 23) como solução para o problema da “caixa de diálogo de escolha”, que reduzia a conversão de deep link devido ao clique extra e confusão do usuário.

A inovação chave: verificação. O Android verifica se o domínio realmente pertence ao desenvolvedor do aplicativo através da API Digital Asset Links. O Google Play Store verifica o App Link na publicação e pode rejeitar uma atualização se a verificação falhar. Isso torna o App Link mais seguro que o Custom URL Scheme: nenhum outro aplicativo pode interceptar um link para seu domínio.

Digital Asset Links é um protocolo aberto que o Google usa não apenas para App Link, mas também para vincular sites a aplicativos nos resultados de busca, Google Assistant e Smart Lock for Passwords. O protocolo é baseado em verificação criptográfica: no assetlinks.json é especificada a impressão digital SHA256 do certificado de assinatura do aplicativo, o que elimina a falsificação.

O processo de funcionamento do App Link consiste em três etapas: verificação do Digital Asset Links, processamento através do Intent Filter e redirecionamento automático. Cada etapa é obrigatória. Se a verificação falhar, o Android mostra uma caixa de diálogo de escolha — esse deep link funciona normalmente, mas sem a vantagem da transição automática.

Digital Asset Links (assetlinks.json)

Asset Links é um arquivo JSON colocado no servidor em https://domain/.well-known/assetlinks.json. O arquivo contém uma matriz de objetos com campos: relation (matriz de strings descrevendo o tipo de relação), target (objeto com namespace e package_name do aplicativo, além de sha256_cert_fingerprints — matriz de impressões digitais SHA256 do certificado de assinatura).

json
// assetlinks.json — configuração mínima do App Link
[{
    "relation": ["delegate_permission/common.handle_all_urls"],
    "target": {
        "namespace": "android_app",
        "package_name": "com.example.app",
        "sha256_cert_fingerprints": [
            "14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:AD:A4:C5:AD:6B:01:14:79:6B:CB:12:6B:21:39:6F:EA"
        ]
    }
}]

A impressão digital SHA256 é obtida do certificado usado para assinar o aplicativo. Para compilações de depuração, usa-se o certificado de depuração padrão do Android; para compilações de lançamento, o certificado do Google Play Console ou o seu próprio. Importante: ao alterar o certificado de assinatura (por exemplo, ao migrar para App Signing by Google Play), é necessário atualizar o assetlinks.json no servidor, caso contrário o App Link deixará de funcionar.

Intent Filter e verificação

O Android verifica o App Link no primeiro clique em um link. O sistema baixa o assetlinks.json do servidor, compara o package_name e a impressão digital SHA256 com o certificado do aplicativo instalado. Se os dados coincidirem, o Android marca o Intent Filter como verificado, e todos os links subsequentes para este domínio abrem automaticamente, sem diálogo.

xml
// AndroidManifest.xml — Intent Filter para App Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <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="example.com"
            android:pathPrefix="/product" />
    </intent-filter>
</activity>

autoVerify="true" é um atributo obrigatório que instrui o Android a verificar o assetlinks.json. Sem este atributo, o Intent Filter não será verificado e o App Link não será ativado. O Android suporta vários Intent Filters em uma única Activity — para diferentes hosts. O sistema verifica cada host separadamente. A verificação é realizada de forma assíncrona e pode levar até 20 segundos no primeiro clique.

Redirecionamento automático

Após verificação bem-sucedida, o Android abre automaticamente o aplicativo ao clicar em qualquer link que corresponda ao Intent Filter verificado. O usuário não vê uma caixa de diálogo de escolha — o aplicativo abre instantaneamente. Se o aplicativo não estiver instalado, o link abre no navegador (como uma página web normal). Esta é a experiência de usuário ideal: transição perfeita sem ações desnecessárias.

Importante: o redirecionamento automático funciona apenas para o esquema https. O App Link não suporta http (protocolo não seguro). Se um usuário abrir manualmente um link http (por exemplo, de SMS), o Android não realiza a verificação e mostra uma caixa de diálogo de escolha. Recomenda-se usar https para todos os links que levam ao aplicativo e configurar o redirecionamento HTTP para HTTPS no servidor.

App Link é a evolução do Deep Link no Android, não uma substituição. A diferença entre eles é fundamental. Deep Link comum (Custom URL Scheme) funciona através de um Intent Filter com um esquema personalizado (myapp://) e sem autoVerify. O Android não verifica se o aplicativo está realmente associado a este esquema — qualquer aplicativo pode registrar myapp:// e interceptar links.

App Link resolve três problemas do Deep Link. Primeiro: segurança — a verificação através do Digital Asset Links impede a interceptação de links. Segundo: experiência do usuário — a ausência da caixa de diálogo de escolha aumenta a conversão para a ação alvo em 20–40%. Terceiro: indexação — o Google indexa URLs https do App Link e pode mostrá-los nos resultados de busca como links para conteúdo dentro do aplicativo.

Compatibilidade: App Link funciona no Android 6.0+ (99% dos dispositivos). Para Android 5.x (Lollipop), usa-se Deep Link comum com caixa de diálogo de escolha. Portanto, recomenda-se suportar ambos os mecanismos: App Link para dispositivos modernos e Custom URL Scheme como fallback para versões antigas. Um Intent Filter com autoVerify="true" não quebra a compatibilidade reversa — no Android < 6, o atributo é ignorado.

CaracterísticaDeep LinkApp Link
EsquemaPersonalizado (myapp://)HTTPS (https://domain)
VerificaçãoNãoassetlinks.json
Caixa de diálogoMostradaRedirecionamento automático
Versão AndroidAPI 1+API 23+ (6.0+)
Indexação GoogleNãoSim (URL https)

A configuração do App Link requer três passos: configuração do Intent Filter no manifesto, colocação do assetlinks.json no servidor e verificação da verificação. O primeiro passo é adicionar um Intent Filter com android:autoVerify="true" no AndroidManifest.xml. É importante especificar o esquema https, o host e os caminhos que o aplicativo deve manipular. Os caminhos podem conter curingas (*) para subpastas.

O segundo passo é criar o assetlinks.json. O arquivo pode ser gerado através do Android Studio (Tools → App Links Assistant). O assistente também ajuda com depuração e testes. O arquivo é colocado no servidor em /.well-known/assetlinks.json. O servidor deve retornar Content-Type: application/json e ser acessível via HTTPS sem redirecionamentos. O Google Play Console também mostra o status de verificação do App Link na seção Publishing.

  1. Adicionar Intent Filter com android:autoVerify="true" no AndroidManifest.xml
  2. Obter a impressão digital SHA256 do certificado (keytool ou App Links Assistant)
  3. Criar assetlinks.json com package_name e sha256_cert_fingerprints
  4. Colocar o arquivo em /.well-known/assetlinks.json em um servidor HTTPS
  5. Verificar a verificação via adb: adb shell dumpsync domain_verification

Testes — o terceiro passo. Use adb para verificar: o comando adb shell am start -W -a android.intent.action.VIEW -d “https://example.com/product/42” abre o aplicativo. Se o navegador abrir em vez do aplicativo, verifique assetlinks.json e autoVerify. O Android Studio App Links Assistant contém um testador integrado: ele mostra o status de verificação para cada domínio e caminho. Para testes automatizados, use Android Testing Library com Intent Matcher.

Características de implementação

Android 12 (API 31) introduziu mudanças no tratamento do App Link. Uma nova verificação específica por domínio foi adicionada: o sistema verifica cada link individualmente, não todo o Intent Filter. Isso melhora a segurança, mas requer atualização do arquivo assetlinks.json ao adicionar novos caminhos. O Android 12 também introduziu o Android App Links Assistant incluído com ADB — comandos para gerenciar a verificação via shell.

Múltiplos domínios é um cenário típico para produção. O aplicativo pode manipular links de example.com, m.example.com e example.org. Cada domínio requer um assetlinks.json separado no servidor correspondente. No manifesto, vários Intent Filters são adicionados — um por domínio. Todos os domínios devem ser acessíveis via HTTPS e passar pela verificação independentemente.

App Link e Jetpack Navigation é a forma recomendada de lidar com App Link em aplicativos Android modernos. O Jetpack Navigation suporta deep links declarativos no nav_graph.xml ou via NavDeepLinkRequest. Isso simplifica a navegação: o desenvolvedor descreve qual tela abre para uma determinada URL, e o componente Navigation manipula o Intent e restaura a pilha de navegação por si só. O Google recomenda usar Jetpack Navigation para App Link.

kotlin
// Processamento de App Link via Jetpack Navigation
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        handleDeepLink(intent)
    }

    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        handleDeepLink(intent)
    }

    private fun handleDeepLink(intent: Intent) {
        intent.data?.let { uri ->
            navController.handleDeepLink(NavDeepLinkRequest
                .Builder
                .fromUri(uri)
                .build()
            )
        }
    }
}

Google Play Store verifica o App Link na publicação. Se o manifesto contiver um Intent Filter com autoVerify mas o assetlinks.json estiver indisponível ou incorreto, o Google Play pode rejeitar a atualização com um aviso. No console do desenvolvedor (Policy and Programs → App Links), o status de verificação de cada domínio é exibido. Antes de publicar, sempre verifique o status — corrigi-lo após a rejeição da atualização atrasa o lançamento.

Perguntas frequentes

Como o App Link difere do Deep Link no Android?

App Link é um Deep Link com verificação através do Digital Asset Links. As principais diferenças: App Link usa um esquema https em vez de um personalizado, não mostra uma caixa de diálogo de escolha e é indexado pelo Google. Um Deep Link comum funciona em todas as versões do Android, mas requer seleção manual do aplicativo.

Onde colocar o assetlinks.json?

O arquivo é colocado na raiz do servidor HTTPS em /.well-known/assetlinks.json. O servidor deve retornar Content-Type: application/json. O arquivo deve ser atualizado ao alterar o certificado de assinatura ou adicionar novos domínios.

Por que o App Link não abre o aplicativo automaticamente?

Principais razões: falta android:autoVerify="true" no Intent Filter, assetlinks.json indisponível via HTTPS, impressão digital SHA256 incorreta, certificado de assinatura diferente (debug vs release). Verifique o status de verificação via adb shell dumpsync domain_verification.

Pode-se usar App Link sem um domínio próprio?

Não — App Link requer um servidor HTTPS com assetlinks.json acessível. Se você não tem um domínio, use Firebase Hosting ou GitHub Pages para hospedar o arquivo. Alternativa: Custom URL Scheme (sem verificação) ou Firebase Dynamic Links.

App Link funciona no Android 5?

Não — App Link é suportado no Android 6.0 (API 23) e superior. No Android 5, Intent Filter com android:autoVerify="true" ignora o atributo e funciona como um Deep Link comum com caixa de diálogo de escolha. Recomenda-se suportar ambos os mecanismos para compatibilidade reversa.

Resumo

  • App Link — a evolução do Deep Link para Android: link https com transição automática para o aplicativo
  • Digital Asset Links — verificação criptográfica através de assetlinks.json no servidor
  • Impressão digital SHA256 do certificado de assinatura — elemento chave ligando o desenvolvedor ao domínio
  • android:autoVerify="true" — atributo obrigatório do Intent Filter para ativar o App Link
  • Segurança — App Link impede a interceptação de links por aplicativos de terceiros
  • Google Play Store verifica a verificação do App Link na publicação e rejeita se houver erros
  • Jetpack Navigation — a forma recomendada de lidar com App Link com deep links declarativos

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também