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 bằng cách sử dụng các lớp DeepLinkRequest và DeepLinkMatcher.

Để 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 của bạn.
  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ó chứa một DeepLinkUri và RequestExtras không bắt buộc có thêm thông tin, chẳng hạn như hành động theo ý định hoặc loại MIME.

Cung cấp DeepLinkRequest nội dung 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. Để giúp việc xác định và tạo thực thể cho các thành phần bổ sung trở nên an toàn về kiểu, thư viện cung cấp giao diện RequestExtrasKey và DSL requestExtras.

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

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

Để xác định các thành phần 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:

Bạn cũng có thể sử dụng emptyRequestExtras() để tạo một thực thể trống hoặc kết hợp các thành phần bổ sung bằ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 xây dựng theo cách này, DeepLinkRequest sẽ được tạo như sau:

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

DeepLinkMatcher liên kết các thực thể DeepLinkRequest đến với các khoá điều hướng có thể thêm vào ngăn xếp lui của ứng dụng. Navigation 3 cung cấp 3 trình so khớp tích hợp sẵn: 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 lui tổng hợp. 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 sẵn hỗ trợ.

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

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

Để cho phép đường liên kết sâu bắt đầu hoạt động, 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 thực thể DeepLinkMatcher.
  2. Sắp xếp tất cả các thực thể DeepLinkMatcher, một cách rõ ràng hoặc bằng cách sử dụng multibindings (đa liên kết).
  3. Tạo DeepLinkRequest từ Intent sắp tới.
  4. So khớp yêu cầu với tất cả trình 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ả khớp.