DeepLinkMatcher 인스턴스 만들기

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

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

여러 일치자가 단일 요청과 일치할 수 있으므로 MatchResult는 Comparable를 구현하여 결과의 순위를 매기고 가장 일치하는 항목을 선택합니다.

유형 매개변수

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

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

두 번째 유형 매개변수 R는 확인되지 않은 다운캐스팅을 요구하지 않고 특수 일치 정보를 보존합니다.

사전 필터링 요청

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

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

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

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

제공된 매처 사용

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

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

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

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

합성 백 스택 빌드

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

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