Tworzenie instancji DeepLinkMatcher

Aby zmapować przychodzące DeepLinkRequest instancje na klucze, które można dodać do stosu wstecz aplikacji, zdefiniuj DeepLinkMatcher instancje.

DeepLinkMatcher to klasa abstrakcyjna, która zawiera 2 metody: match i matchRequest. Podklasy muszą implementować matchRequest, która przyjmuje DeepLinkRequest i zwraca DeepLinkMatcher.MatchResult, jeśli żądanie pasuje, lub null w przeciwnym razie.

Ponieważ do jednego żądania może pasować wiele dopasowań, MatchResult implementuje Comparable, aby oceniać wyniki i wybierać najlepsze dopasowanie.

Parametry typu

Klasa DeepLinkMatcher deklaruje 2 parametry typu ogólnego: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: typ klucza nawigacji docelowej (np. UserProfileKey lub NavKey) zwracany, gdy precyzyjny link pasuje.
  • R : DeepLinkMatcher.MatchResult<T>: konkretny podtyp MatchResult zwracany przez matchRequest i match.

Drugi parametr typu, R, zachowuje specjalistyczne informacje o dopasowaniu bez konieczności sprawdzania rzutowania w dół:

Wstępne filtrowanie żądań

Implementacje DeepLinkMatcher mogą określać listę instancji DeepLinkMatcher.Filter, aby filtrować żądania przed ich oceną.

Biblioteka zawiera funkcje pomocnicze do tworzenia typowych filtrów:

Dzięki temu możesz używać tego samego wzorca URI w przypadku różnych działań, np. wyświetlania i edytowania:

Ponieważ Filter to interfejs funkcjonalny (SAM), możesz też tworzyć filtry za pomocą wyrażeń lambda:

Korzystanie z podanych dopasowań

Biblioteka zawiera 3 standardowe implementacje:DeepLinkMatcher StaticKeyDeepLinkMatcher, UriDeepLinkMatcher i BackStackMatcher. Jeśli te dopasowania nie spełniają wymagań Twojej aplikacji, możesz utworzyć niestandardowe dopasowania precyzyjnych linków.

W przypadku podstawowych precyzyjnych linków, które nie mają argumentów do wyodrębnienia, użyj StaticKeyDeepLinkMatcher aby dopasować żądania spełniające wszystkie podane filtry.

Na przykład, aby obsługiwać intencje dotyczące ACTION_APPLICATION_PREFERENCES:

Aby dopasowywać hierarchiczne identyfikatory URI do wzorców i wyodrębniać argumenty, użyj UriDeepLinkMatcher. Możesz na przykład dopasować www.example.com/users/{id}, aby wyodrębnić argument id do klucza docelowego. Więcej informacji znajdziesz w artykule Dopasowywanie precyzyjnych linków URI.

Tworzenie syntetycznego stosu wstecz

Aby określić, jak utworzyć syntetyczny stos wstecz na podstawie udanego dopasowania, użyj BackStackMatcher. Zamiast bezpośrednio tworzyć instancję BackStackMatcher, wywołaj funkcję rozszerzenia withBackStack w innym DeepLinkMatcher. withBackStack opakowuje odbiorcę w BackStackMatcher który zwraca BackStackMatchResult zawierający syntetyczny stos wstecz List. Ponieważ BackStackMatchResult przekazuje porównanie do bazowego wyniku dopasowania, opakowanie dopasowania w withBackStack zachowuje jego pierwotną rangę dopasowania.

Aby obsługiwać wynikowy stos wstecz w aktywności, przeczytaj artykuł Dopasowywanie przychodzącego żądania.