MASTG-KNOW-0019: Deep Links

Deep links são URIs de qualquer esquema que levam os usuários diretamente a conteúdo específico em um aplicativo. Um app pode configurar deep links adicionando filtros de intent no Android Manifest e extraindo dados de intents recebidas para navegar os usuários até a activity correta.

O Android suporta dois tipos de deep links:

  • Custom URL Schemes, que são deep links usando qualquer esquema de URL personalizado, por exemplo myapp:// (não verificados pelo sistema operacional).
  • Android App Links (Android 6.0 (API nível 23) e superior), que são deep links usando os esquemas http:// e https:// e contêm o atributo autoVerify (que dispara a verificação pelo sistema operacional).

Deep Link Collision:

O uso de deep links não verificados pode causar um problema significativo - qualquer outro aplicativo instalado no dispositivo de um usuário pode declarar e tentar manipular o mesmo intent, o que é conhecido como deep link collision. Qualquer aplicativo arbitrário pode declarar controle sobre exatamente o mesmo deep link pertencente a outro aplicativo.

Em versões recentes do Android, isso resulta em um chamado disambiguation dialog exibido ao usuário, que pergunta qual aplicativo deve manipular o deep link. O usuário pode cometer o erro de escolher um aplicativo malicioso em vez do legítimo.

Android App Links:

Para resolver o problema de deep link collision, o Android 6.0 (API Nível 23) introduziu os Android App Links, que são deep links verificados baseados em uma URL de site explicitamente registrada pelo desenvolvedor. Clicar em um Android App Link abrirá imediatamente o app se ele estiver instalado.

Existem algumas diferenças-chave em relação aos deep links não verificados:

  • Android App Links usam apenas os esquemas http:// e https://, qualquer outro esquema de URL personalizado não é permitido.
  • Android App Links exigem um domínio ativo para servir um arquivo de Digital Asset Links via HTTPS.
  • Android App Links não sofrem com deep link collision, pois não exibem um disambiguation dialog quando um usuário os abre.