DeepLinkMatcher-Instanzen erstellen

Um eingehende DeepLinkRequest-Instanzen Schlüsseln zuzuordnen, 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. Unterklassen müssen matchRequest implementieren, das ein DeepLinkRequest akzeptiert und ein DeepLinkMatcher.MatchResult zurückgibt, wenn die Anfrage übereinstimmt, andernfalls null.

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

Typparameter

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

  • T : Any: Der Typ des Zielnavigationsschlüssels (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 spezielle Übereinstimmungsinformationen bei, ohne dass eine nicht überprüfte Typumwandlung erforderlich ist:

Anfragen vorfiltern

DeepLinkMatcher Implementierungen können eine Liste von DeepLinkMatcher.Filter-Instanzen angeben, um Anfragen zu filtern, bevor sie ausgewertet werden.

Die Bibliothek enthält Hilfsfunktionen zum Erstellen allgemeiner Filter:

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

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

Bereitgestellte Matcher verwenden

Die Bibliothek enthält drei StandardDeepLinkMatcherimplementierungen: 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 ohne zu extrahierende Argumente StaticKeyDeepLinkMatcher, um Anfragen abzugleichen, die alle angegebenen Filter erfüllen.

So verarbeiten Sie beispielsweise 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 id Argument in einen Zielschlüssel zu extrahieren. Weitere Informationen finden Sie unter URI-Deeplinks abgleichen.

Synthetischen Back-Stack erstellen

Mit BackStackMatcher können Sie definieren, wie ein synthetischer Back-Stack aus einer erfolgreichen Übereinstimmung erstellt wird. Rufen Sie die withBackStack Erweiterungsfunktion für einen anderen DeepLinkMatcher auf, anstatt BackStackMatcher direkt zu instanziieren. withBackStack umschließt den Empfänger in einem BackStackMatcher das ein BackStackMatchResult mit einer synthetischen Back-Stack List zurückgibt. Da BackStackMatchResult den Vergleich an das zugrunde liegende Übereinstimmungsergebnis delegiert, bleibt die ursprüngliche Übereinstimmungsbewertung erhalten, wenn ein Matcher in withBackStack umschlossen wird.

Informationen zum Verarbeiten des resultierenden Back-Stacks in Ihrer Aktivität finden Sie unter Eingehende Anfrage abgleichen.