딥 링크 지원

버전 1.2.0부터 Navigation 3은 DeepLinkRequest 및 DeepLinkMatcher 클래스를 사용하여 앱의 대상으로 딥 링크를 지원합니다.

앱에서 딥 링크를 지원하려면 다음 단계를 완료하세요.

  1. AndroidManifest.xml에서 인텐트 필터를 정의하여 앱에서 처리할 수 있는 URI를 지정합니다.
  2. DeepLinkMatcher 인스턴스를 만들어 수신 요청을 탐색 키에 매핑합니다.
  3. 활동의 onCreate 또는 onNewIntent 메서드에서 수신 요청을 일치시키고 이에 따라 백 스택을 업데이트합니다.

DeepLinkRequest를 만드는 방법

DeepLinkRequest는 수신 딥 링크를 나타냅니다. 여기에는 DeepLinkUri와 인텐트 작업 또는 MIME 유형과 같은 추가 정보가 포함된 선택적 RequestExtras가 포함됩니다.

DeepLinkRequest 추가 항목 제공

딥 링크와 관련된 추가 정보를 저장하려면 RequestExtras 클래스를 사용합니다. 추가 항목을 유형 안전 방식으로 정의하고 인스턴스화하기 위해 라이브러리는 RequestExtrasKey 인터페이스와 requestExtras DSL을 제공합니다.

또한 라이브러리는 두 개의 추가 키와 관련 도우미를 제공합니다.

  • MimeTypeExtrasKey: MIME 유형 String을 저장하는 데 사용됩니다.
  • ActionExtrasKey (Android만 해당): Intent의 작업 String을 저장하는 데 사용됩니다.

자체 맞춤 추가 항목을 정의하려면 유형이 지정된 제네릭으로 RequestExtrasKey 인터페이스를 구현합니다.

emptyRequestExtras()를 사용하여 빈 인스턴스를 구성하거나 + (plus) 및 - (minus) 연산자를 사용하여 추가 항목을 결합할 수도 있습니다.

Intent에서 DeepLinkRequest 만들기

Android에서는 Intent에서 직접 DeepLinkRequest를 만들 수 있습니다. 이러한 방식으로 구성된 경우 DeepLinkRequest는 다음과 같이 빌드됩니다.

  • uri는 인텐트의 data 필드에서 복사됩니다.
  • null이 아닌 경우 MIME 유형 및 작업 추가 항목은 해당 인텐트 필드에서 설정됩니다.
  • null이 아닌 값을 가진 모든 intent.extras는 DeepLinkRequest.IntentExtrasKey에서 SavedState로 저장됩니다.
  • extras 매개변수를 사용하여 제공된 추가 항목이 추가됩니다.

DeepLinkMatcher는 수신 DeepLinkRequest 인스턴스를 앱의 백 스택에 추가할 수 있는 탐색 키에 매핑합니다. Navigation 3은 세 가지 기본 제공 일치자를 제공합니다. 패턴 기반 URI 일치를 위한 UriDeepLinkMatcher, 기본 링크를 위한 StaticKeyDeepLinkMatcher, 합성 백 스택을 빌드하기 위한 BackStackMatcher입니다. 또한 이 라이브러리는 기본 제공 일치자가 지원하지 않는 사용 사례를 위한 맞춤 일치자를 지원합니다.

자세한 내용은 DeepLinkMatchers 만들기를 참고하세요.

인텐트 필터 추가하기

딥 링크가 활동을 시작하도록 하려면 앱의 AndroidManifest.xml에서 일치하는 <intent-filter> 요소를 정의해야 합니다. 자세한 내용은 수신 링크의 인텐트 필터 추가를 참고하세요.

수신 요청 일치

DeepLinkMatcher 인스턴스를 만든 후에는 활동에서 수신 요청을 일치시킬 수 있습니다.

수신 요청을 일치시키려면 다음 단계를 완료하세요.

  1. DeepLinkMatcher 인스턴스를 인스턴스화합니다.
  2. 명시적으로 또는 멀티바인딩을 사용하여 모든 DeepLinkMatcher 인스턴스를 수집합니다.
  3. I can create a DeepLinkRequest from the incoming Intent.
  4. 모든 일치자와 요청을 일치시키고 가장 일치하는 항목을 찾습니다.
  5. 일치 결과에서 백 스택을 만듭니다.