Hỗ trợ đường liên kết sâu

Kể từ phiên bản 1.2.0, Navigation 3 hỗ trợ liên kết sâu đến các đích đến trong ứng dụng của bạn bằng cách sử dụng các lớp DeepLinkRequestDeepLinkMatcher.

Để hỗ trợ đường liên kết sâu trong ứng dụng, hãy hoàn tất các bước sau:

  1. Xác định bộ lọc ý định trong AndroidManifest.xml để chỉ định những URI mà ứng dụng của bạn có thể xử lý.
  2. Tạo các thực thể DeepLinkMatcher để liên kết các yêu cầu đến với các phím điều hướng.
  3. So khớp các yêu cầu đến trong phương thức onCreate hoặc onNewIntent của hoạt động và cập nhật ngăn xếp lui cho phù hợp.

Tạo một DeepLinkRequest

DeepLinkRequest đại diện cho một đường liên kết sâu đến. Nội dung này chứa DeepLinkUriRequestExtras không bắt buộc cùng thông tin bổ sung, chẳng hạn như thao tác theo ý định hoặc loại MIME.

Cung cấp DeepLinkRequest bổ sung

Để lưu trữ thông tin bổ sung liên quan đến đường liên kết sâu, hãy sử dụng lớp RequestExtras. Để xác định và khởi tạo các loại bổ sung an toàn về kiểu, thư viện này cung cấp giao diện RequestExtrasKey và DSL requestExtras.

Ngoài ra, thư viện này cung cấp 2 khoá bổ sung và các trợ giúp liên quan:

  • MimeTypeExtrasKey: Dùng để lưu trữ một loại MIME String.
  • ActionExtrasKey (chỉ dành cho Android): Dùng để lưu trữ thao tác Intent của String.

Để xác định các thông tin bổ sung tuỳ chỉnh của riêng bạn, hãy triển khai giao diện RequestExtrasKey bằng một kiểu chung được nhập:

Bạn cũng có thể dùng emptyRequestExtras() để tạo một thực thể trống hoặc kết hợp các phần bổ sung bằng cách dùng toán tử + (plus) và - (minus).

Tạo DeepLinkRequest từ Intent

Trên Android, bạn có thể tạo DeepLinkRequest ngay từ Intent. Khi được tạo theo cách này, DeepLinkRequest sẽ có cấu trúc như sau:

  • uri được sao chép từ trường data của ý định.
  • Nếu không phải là giá trị rỗng, loại MIME và thao tác extras sẽ được đặt từ các trường ý định tương ứng.
  • Tất cả intent.extras có giá trị khác rỗng sẽ được lưu dưới dạng SavedState trong DeepLinkRequest.IntentExtrasKey.
  • Mọi thuộc tính bổ sung khác được cung cấp bằng tham số extras đều được thêm vào.

DeepLinkMatcher ánh xạ các thực thể DeepLinkRequest đến các khoá điều hướng mà bạn có thể thêm vào ngăn xếp lui của ứng dụng. Navigation 3 cung cấp 3 đối tượng so khớp tích hợp: UriDeepLinkMatcher để so khớp URI dựa trên mẫu, StaticKeyDeepLinkMatcher cho các đường liên kết cơ bản và BackStackMatcher để tạo ngăn xếp quay lại giả. Thư viện này cũng hỗ trợ trình so khớp tuỳ chỉnh cho các trường hợp sử dụng không được trình so khớp tích hợp hỗ trợ.

Để biết thêm thông tin, hãy xem phần Tạo DeepLinkMatchers.

Thêm bộ lọc ý định

Để cho phép một đường liên kết sâu khởi động hoạt động của bạn, bạn phải xác định các phần tử <intent-filter> phù hợp trong AndroidManifest.xml của ứng dụng. Để biết thêm thông tin, hãy xem phần Thêm bộ lọc ý định cho đường liên kết đến.

So khớp yêu cầu đến

Sau khi tạo các thực thể DeepLinkMatcher, bạn có thể so khớp các yêu cầu đến trong hoạt động của mình.

Để so khớp một yêu cầu đến, hãy hoàn tất các bước sau:

  1. Tạo thực thể cho các phiên bản DeepLinkMatcher.
  2. Đối chiếu tất cả các thực thể DeepLinkMatcher của bạn, một cách rõ ràng hoặc bằng cách sử dụng multibindings.
  3. Tạo một DeepLinkRequest từ Intent đến.
  4. So khớp yêu cầu với tất cả các đối tượng so khớp và tìm kết quả phù hợp nhất.
  5. Tạo ngăn xếp lui từ kết quả so khớp.