DeepLinkMatcher-Instanzen erstellen

Wenn Sie eingehende DeepLinkRequest-Instanzen Schlüsseln zuordnen möchten, die dem Back Stack Ihrer App hinzugefügt werden können, definieren Sie DeepLinkMatcher-Instanzen.

DeepLinkMatcher ist eine abstrakte Klasse, die zwei Methoden enthält: match und matchRequest. Abgeleitete Klassen müssen matchRequest implementieren, das einen DeepLinkRequest akzeptiert und einen DeepLinkMatcher.MatchResult zurückgibt, wenn die Anfrage übereinstimmt, oder andernfalls null.

Da mehrere Abgleiche mit einer einzelnen Anfrage übereinstimmen können, implementiert MatchResult Comparable, um Ergebnisse zu bewerten und die beste Übereinstimmung auszuwählen.

Typparameter

Die Klasse DeepLinkMatcher deklariert zwei generische Typparameter: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: Der Typ des Navigationsschlüssels für das Ziel (z. B. UserProfileKey oder NavKey), der zurückgegeben wird, wenn der Deeplink übereinstimmt.
  • R : DeepLinkMatcher.MatchResult<T>: Der spezifische MatchResult-Untertyp, der von matchRequest und match zurückgegeben wird.

Der zweite Typparameter, R, behält spezialisierte Übereinstimmungsinformationen bei, ohne dass ein ungeprüftes Downcasting erforderlich ist:

Anfragen vorfiltern

DeepLinkMatcher-Implementierungen können eine Liste von DeepLinkMatcher.Filter-Instanzen angeben, um Anfragen vor der Auswertung zu filtern.

Die Bibliothek enthält Hilfsfunktionen zum Erstellen gängiger Filter:

Mit diesem Ansatz können Sie dasselbe URI-Muster für verschiedene Aktionen wiederverwenden, z. B. für das Ansehen und Bearbeiten:

Da Filter eine funktionale (SAM) Schnittstelle ist, können Sie Filter auch mit Lambda-Ausdrücken erstellen:

Bereitgestellte Matcher verwenden

Die Bibliothek enthält drei Standardimplementierungen von DeepLinkMatcher: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher und BackStackMatcher. Wenn diese Matcher die Anforderungen Ihrer App nicht erfüllen, können Sie benutzerdefinierte Deeplink-Matcher erstellen.

Verwenden Sie für einfache Deeplinks, die keine Argumente zum Extrahieren haben, StaticKeyDeepLinkMatcher, um Anfragen abzugleichen, die alle angegebenen Filter erfüllen.

Beispiel für die Verarbeitung von Intents für ACTION_APPLICATION_PREFERENCES:

Verwenden Sie UriDeepLinkMatcher, um hierarchische URIs mit Mustern abzugleichen und Argumente zu extrahieren. Sie können beispielsweise www.example.com/users/{id} abgleichen, um das Argument id in einen Zielschlüssel zu extrahieren. Weitere Informationen finden Sie unter URI-Deeplinks abgleichen.

Synthetischen Back Stack erstellen

Mit BackStackMatcher können Sie festlegen, wie ein synthetischer Back Stack aus einer erfolgreichen Übereinstimmung erstellt werden soll. Anstatt BackStackMatcher direkt zu instanziieren, rufen Sie die Erweiterungsfunktion withBackStack für ein anderes DeepLinkMatcher auf. withBackStack verpackt den Empfänger in einen BackStackMatcher, der einen BackStackMatchResult mit einem synthetischen Back Stack List zurückgibt. Da BackStackMatchResult den Vergleich an das zugrunde liegende Abgleichergebnis delegiert, bleibt die ursprüngliche Abgleichrangfolge erhalten, wenn ein Abgleicher in withBackStack verpackt wird.

Informationen zum Umgang mit dem resultierenden Back Stack in deiner Aktivität findest du unter Eingehende Anfrage abgleichen.