Oferecer suporte a links diretos

A partir da versão 1.2.0, o Navigation 3 oferece suporte a links diretos para destinos no seu app usando as classes DeepLinkRequest e DeepLinkMatcher.

Para oferecer suporte a links diretos no seu app, siga estas etapas:

  1. Defina filtros de intent no AndroidManifest.xml para especificar quais URIs o app pode processar.
  2. Crie instâncias de DeepLinkMatcher para mapear as solicitações recebidas para as chaves de navegação.
  3. Faça a correspondência das solicitações recebidas no método onCreate ou onNewIntent da atividade e atualize a backstack de acordo.

Criar um DeepLinkRequest

Um DeepLinkRequest representa um link direto de entrada. Ele contém um DeepLinkUri e um RequestExtras opcional com outras informações, como a ação da intent ou o tipo MIME.

Fornecer extras do DeepLinkRequest

Para armazenar outras informações relacionadas ao link direto, use a classe RequestExtras. Para que a definição e a instanciação de extras sejam seguras para tipos, a biblioteca fornece a interface RequestExtrasKey e a DSL requestExtras.

Além disso, a biblioteca fornece duas chaves extras e auxiliares associados:

Para definir seus próprios extras personalizados, implemente a interface RequestExtrasKey com um genérico tipado:

Também é possível usar emptyRequestExtras() para criar uma instância vazia ou combinar extras usando os operadores + (plus) e - (minus).

Criar um DeepLinkRequest com base em um Intent

No Android, é possível criar um DeepLinkRequest diretamente de um Intent. Quando construído dessa maneira, o DeepLinkRequest é criado da seguinte maneira:

  • O uri é copiado do campo data da intent.
  • Se não for nulo, o tipo MIME e os extras da ação serão definidos nos campos de intent correspondentes.
  • Todos os intent.extras com valores não nulos são salvos como um SavedState em DeepLinkRequest.IntentExtrasKey.
  • Todos os extras adicionais fornecidos usando o parâmetro extras são adicionados.

Um DeepLinkMatcher mapeia instâncias de DeepLinkRequest recebidas para chaves de navegação que podem ser adicionadas à backstack do app. O Navigation 3 oferece três correspondentes integrados: UriDeepLinkMatcher para correspondência de URI baseada em padrões, StaticKeyDeepLinkMatcher para links básicos e BackStackMatcher para criar backstacks sintéticas. A biblioteca também oferece suporte a comparadores personalizados para casos de uso não cobertos pelos comparadores integrados.

Para mais informações, consulte Criar DeepLinkMatchers.

Adicionar filtros de intent

Para permitir que um link direto inicie sua atividade, defina os elementos <intent-filter> correspondentes no AndroidManifest.xml do app. Para mais informações, consulte Adicionar filtros de intent para links de entrada.

Corresponder a uma solicitação recebida

Depois de criar as instâncias do DeepLinkMatcher, é possível corresponder as solicitações recebidas na sua atividade.

Para corresponder a uma solicitação recebida, siga estas etapas:

  1. Instancie as instâncias de DeepLinkMatcher.
  2. Agrupe todas as instâncias de DeepLinkMatcher, explicitamente ou usando multibindings.
  3. Crie um DeepLinkRequest com base no Intent recebido.
  4. Compare a solicitação com todos os correspondentes e encontre a melhor correspondência.
  5. Crie a backstack com base no resultado da correspondência.