Crea istanze DeepLinkMatcher

Per mappare le istanze DeepLinkRequest in entrata alle chiavi che possono essere aggiunte a allo stack indietro dell'app, definisci le istanze DeepLinkMatcher.

DeepLinkMatcher è una classe astratta che include due metodi, match e matchRequest. Le sottoclassi devono implementare matchRequest, che accetta un DeepLinkRequest e restituisce un DeepLinkMatcher.MatchResult se la richiesta corrisponde o null in caso contrario.

Poiché più matcher potrebbero corrispondere a una singola richiesta, MatchResult implementa Comparable per classificare i risultati e selezionare la corrispondenza migliore.

Parametri di tipo

La classe DeepLinkMatcher dichiara due parametri di tipo generico: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: il tipo di chiave di navigazione di destinazione (ad esempio UserProfileKey o NavKey) restituito quando il link diretto corrisponde.
  • R : DeepLinkMatcher.MatchResult<T>: il sottotipo MatchResult specifico restituito da matchRequest e match.

Il secondo parametro di tipo, R, conserva le informazioni di corrispondenza specializzate senza richiedere il downcasting non controllato:

Pre-filtrare le richieste

DeepLinkMatcher implementazioni possono specificare un elenco di DeepLinkMatcher.Filter istanze per filtrare le richieste prima di valutarle.

La libreria include funzioni di assistenza per creare filtri comuni:

Questo approccio ti consente di riutilizzare lo stesso pattern URI per azioni diverse, ad esempio visualizzazione e modifica:

Poiché Filter è un'interfaccia funzionale (SAM), puoi anche creare filtri utilizzando le espressioni lambda:

Utilizzare i matcher forniti

La libreria include tre implementazioni standard DeepLinkMatcher: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher e BackStackMatcher. Se questi matcher non soddisfano i requisiti dell'app, puoi creare matcher di link diretti personalizzati.

Per i link diretti di base che non hanno argomenti da estrarre, utilizza StaticKeyDeepLinkMatcher per trovare le richieste che soddisfano tutti i filtri forniti.

Ad esempio, per gestire gli intenti per ACTION_APPLICATION_PREFERENCES:

Per trovare gli URI gerarchici rispetto ai pattern ed estrarre gli argomenti, utilizza UriDeepLinkMatcher. Ad esempio, puoi trovare www.example.com/users/{id} per estrarre l'argomento id in una chiave di destinazione. Per saperne di più, vedi Trovare i link diretti URI.

Creare un back stack sintetico

Per definire come creare un back stack sintetico da una corrispondenza riuscita, utilizza BackStackMatcher. Anziché creare un'istanza di BackStackMatcher direttamente, chiama la funzione di estensione withBackStack su un altro DeepLinkMatcher. withBackStack racchiude il ricevitore in un BackStackMatcher che restituisce un BackStackMatchResult contenente un back stack sintetico List. Poiché BackStackMatchResult delega il confronto al risultato di corrispondenza sottostante, il wrapping di un matcher in withBackStack ne conserva la classificazione di corrispondenza originale.

Per gestire il back stack risultante nella tua attività, vedi Trovare una richiesta in entrata.