Tworzenie instancji DeepLinkMatcher

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

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ć kilka 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 nawigacyjnego miejsca docelowego (np. UserProfileKey lub NavKey) zwracany, gdy precyzyjny link pasuje do wzorca.
  • R : DeepLinkMatcher.MatchResult<T>: konkretny podtyp MatchResult zwracany przez matchRequest i match.

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

Żądania filtrowania wstępnego

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 identyfikatora URI do różnych działań, takich jak wyświetlanie i edytowanie:

Ponieważ Filter jest interfejsem funkcjonalnym (SAM), możesz też tworzyć filtry za pomocą wyrażeń lambda:

Korzystanie z udostępnionych 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, które spełniają wszystkie podane filtry.

Na przykład, aby obsługiwać intencje dla ACTION_APPLICATION_PREFERENCES:

Do dopasowywania hierarchicznych identyfikatorów URI do wzorców i wyodrębniania argumentów używaj 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 wstecznego

Aby określić, jak utworzyć syntetyczny stos wsteczny z dopasowania, użyj BackStackMatcher. Zamiast bezpośrednio tworzyć instancję BackStackMatcher, wywołaj funkcję rozszerzenia withBackStack w innym DeepLinkMatcher. withBackStack opakowuje odbiornik w BackStackMatcher, który zwraca BackStackMatchResult zawierający syntetyczny stos wsteczny List. Ponieważ BackStackMatchResult przekazuje porównanie do wyniku dopasowania, opakowanie dopasowania w withBackStack zachowuje jego pierwotny ranking dopasowania.

Aby obsłużyć wynikowy stos wsteczny w aktywności, zapoznaj się z sekcją Dopasowywanie przychodzącego żądania.