DeepLinkMatcher 인스턴스 만들기

수신 DeepLinkRequest 인스턴스를 앱의 백 스택에 추가할 수 있는 키에 매핑하려면 DeepLinkMatcher 인스턴스를 정의합니다.

DeepLinkMatchermatchmatchRequest라는 두 가지 메서드를 포함하는 추상 클래스입니다. 서브클래스는 matchRequest를 구현해야 합니다. 이 메서드는 DeepLinkRequest를 가져오고 요청이 일치하면 DeepLinkMatcher.MatchResult를 반환하며 그렇지 않으면 null를 반환합니다.

여러 일치자가 단일 요청과 일치할 수 있으므로 MatchResult는 결과를 순위 지정하고 가장 적합한 일치자를 선택하기 위해 Comparable를 구현합니다.

유형 매개변수

DeepLinkMatcher 클래스는 두 가지 일반 유형 매개변수를 선언합니다: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: 딥 링크가 일치할 때 반환되는 대상 탐색 키 유형입니다 (예: UserProfileKey 또는 NavKey).
  • R : DeepLinkMatcher.MatchResult<T>: matchRequestmatch에서 반환되는 특정 MatchResult 하위 유형입니다.

두 번째 유형 매개변수 R은 검사되지 않은 하향 변환을 요구하지 않고 전문화된 일치 정보를 보존합니다.

요청 사전 필터링

DeepLinkMatcher 구현은 평가하기 전에 요청을 필터링하기 위해 DeepLinkMatcher.Filter 인스턴스 목록을 지정할 수 있습니다.

라이브러리에는 일반 필터를 만드는 도우미 함수가 포함되어 있습니다.

이 접근 방식을 사용하면 보기와 수정 등 여러 작업에 동일한 URI 패턴을 재사용할 수 있습니다.

Filter는 함수형 (SAM) 인터페이스이므로 람다 표현식을 사용하여 필터를 만들 수도 있습니다.

제공된 일치자 사용

라이브러리에는 세 가지 표준 DeepLinkMatcher 구현이 포함되어 있습니다. StaticKeyDeepLinkMatcher, UriDeepLinkMatcher, 및 BackStackMatcher. 이러한 일치자가 앱의 요구사항을 충족하지 않는 경우 맞춤 딥 링크 일치자를 만들 수 있습니다.

추출할 인수가 없는 기본 딥 링크의 경우 StaticKeyDeepLinkMatcher를 사용하여 제공된 모든 필터를 충족하는 요청을 일치시킵니다.

예를 들어 ACTION_APPLICATION_PREFERENCES의 인텐트를 처리하려면 다음을 실행합니다.

패턴에 대해 계층적 URI를 일치시키고 인수를 추출하려면 UriDeepLinkMatcher를 사용하세요. 예를 들어 www.example.com/users/{id}를 일치시켜 id 인수를 대상 키로 추출할 수 있습니다. 자세한 내용은 URI 딥 링크 일치를 참고하세요.

합성 백 스택 빌드

일치가 성공한 경우 합성 백 스택을 빌드하는 방법을 정의하려면 BackStackMatcher를 사용하세요. BackStackMatcher 를 직접 인스턴스화하는 대신 다른 DeepLinkMatcher에서 withBackStack 확장 함수를 호출합니다. withBackStack은 합성 백 스택 List이 포함된 BackStackMatchResult를 반환하는 BackStackMatcher 에서 수신자를 래핑합니다. BackStackMatchResult는 비교를 기본 일치 결과에 위임하므로 withBackStack에서 일치자를 래핑하면 원래 일치 순위가 유지됩니다.

활동에서 결과 백 스택을 처리하려면 수신 요청 일치를 참고하세요.