Crea istanze DeepLinkMatcher

Per mappare le istanze DeepLinkRequest in entrata alle chiavi che possono essere aggiunte al back stack della tua 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, altrimenti null.

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 deep link 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:

Richieste di pre-filtraggio

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

La libreria include funzioni helper per creare filtri comuni:

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

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

Utilizza i matcher forniti

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

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

Ad esempio, per gestire gli intent per ACTION_APPLICATION_PREFERENCES:

Per trovare corrispondenze tra URI gerarchici e pattern ed estrarre argomenti, utilizza UriDeepLinkMatcher. Ad esempio, puoi trovare una corrispondenza con www.example.com/users/{id} per estrarre l'argomento id in una chiave di destinazione. Per saperne di più, consulta Crea una corrispondenza con i deep link URI.

Crea 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 aggrega 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 conserva il ranking di corrispondenza originale.

Per gestire il back stack risultante nella tua attività, consulta Trova una richiesta in arrivo.