Criar instâncias DeepLinkMatcher

Para mapear instâncias DeepLinkRequest recebidas para chaves que podem ser adicionadas a backstack do app, defina instâncias DeepLinkMatcher.

DeepLinkMatcher é uma classe abstrata que inclui dois métodos, match e matchRequest. As subclasses precisam implementar matchRequest, que recebe um DeepLinkRequest e retorna um DeepLinkMatcher.MatchResult se a solicitação corresponder ou null caso contrário.

Como vários correspondentes podem corresponder a uma única solicitação, MatchResult implementa Comparable para classificar os resultados e selecionar a melhor correspondência.

Parâmetros de tipo

A classe DeepLinkMatcher declara dois parâmetros de tipo genérico: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: o tipo de chave de navegação de destino (como UserProfileKey ou NavKey) retornado quando o link direto corresponde.
  • R : DeepLinkMatcher.MatchResult<T>: o subtipo MatchResult específico retornado por matchRequest e match.

O segundo parâmetro de tipo, R, preserva informações de correspondência especializadas sem exigir downcasting não verificado:

Pré-filtrar solicitações

DeepLinkMatcher implementações podem especificar uma lista de DeepLinkMatcher.Filter instâncias para filtrar solicitações antes de avaliá-las.

A biblioteca inclui funções auxiliares para criar filtros comuns:

Essa abordagem permite reutilizar o mesmo padrão de URI para diferentes ações, como visualização e edição:

Como Filter é uma interface funcional (SAM), também é possível criar filtros usando expressões lambda:

Usar correspondentes fornecidos

A biblioteca inclui três implementações padrão:DeepLinkMatcher StaticKeyDeepLinkMatcher, UriDeepLinkMatcher e BackStackMatcher. Se esses correspondentes não atenderem aos requisitos do app, você pode criar correspondentes de link direto personalizados.

Para links diretos básicos que não têm argumentos a serem extraídos, use StaticKeyDeepLinkMatcher para corresponder a solicitações que atendam a todos os filtros fornecidos.

Por exemplo, para processar intents de ACTION_APPLICATION_PREFERENCES:

Para corresponder URIs hierárquicos a padrões e extrair argumentos, use UriDeepLinkMatcher. Por exemplo, é possível corresponder www.example.com/users/{id} para extrair o id argumento em uma chave de destino. Para mais informações, consulte Corresponder links diretos de URI.

Criar uma backstack sintética

Para definir como criar uma backstack sintética a partir de uma correspondência bem-sucedida, use BackStackMatcher. Em vez de instanciar BackStackMatcher diretamente, chame a withBackStack função de extensão em outro DeepLinkMatcher. withBackStack envolve o receptor em um BackStackMatcher que retorna um BackStackMatchResult contendo uma backstack sintética List. Como BackStackMatchResult delega a comparação ao resultado da correspondência subjacente, o encapsulamento de um correspondente em withBackStack preserva a classificação de correspondência original.

Para processar a backstack resultante na atividade, consulte Corresponder uma solicitação recebida.