Membuat instance DeepLinkMatcher

Untuk memetakan instance DeepLinkRequest yang masuk ke kunci yang dapat ditambahkan ke tumpukan kembali aplikasi Anda, Anda menentukan instance DeepLinkMatcher.

DeepLinkMatcher adalah class abstrak yang mencakup dua metode, match dan matchRequest. Subclass harus menerapkan matchRequest, yang menggunakan DeepLinkRequest dan menampilkan DeepLinkMatcher.MatchResult jika permintaan cocok, atau null jika tidak.

Karena beberapa pencocok dapat mencocokkan satu permintaan, MatchResult menerapkan Comparable untuk memberi peringkat pada hasil dan memilih kecocokan terbaik.

Parameter jenis

Class DeepLinkMatcher mendeklarasikan dua parameter jenis generik: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>>.

  • T : Any: Jenis tombol navigasi tujuan (seperti UserProfileKey atau NavKey) yang ditampilkan saat deep link cocok.
  • R : DeepLinkMatcher.MatchResult<T>: Subjenis MatchResult tertentu yang ditampilkan oleh matchRequest dan match.

Parameter jenis kedua, R, mempertahankan informasi kecocokan khusus tanpa memerlukan downcasting yang tidak diperiksa:

Permintaan pra-filter

Implementasi DeepLinkMatcher dapat menentukan daftar instance DeepLinkMatcher.Filter untuk memfilter permintaan sebelum mengevaluasinya.

Library ini menyertakan fungsi bantuan untuk membuat filter umum:

Dengan pendekatan ini, Anda dapat menggunakan kembali pola URI yang sama untuk tindakan yang berbeda, seperti melihat versus mengedit:

Karena Filter adalah antarmuka fungsional (SAM), Anda juga dapat membuat filter menggunakan ekspresi lambda:

Menggunakan pencocok yang disediakan

Library ini mencakup tiga implementasi DeepLinkMatcher standar: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher, dan BackStackMatcher. Jika pencocok ini tidak memenuhi persyaratan aplikasi Anda, Anda dapat membuat pencocok deep link kustom.

Untuk deep link dasar yang tidak memiliki argumen untuk diekstrak, gunakan StaticKeyDeepLinkMatcher untuk mencocokkan permintaan yang memenuhi semua filter yang diberikan.

Misalnya, untuk menangani intent untuk ACTION_APPLICATION_PREFERENCES:

Untuk mencocokkan URI hierarkis dengan pola dan mengekstrak argumen, gunakan UriDeepLinkMatcher. Misalnya, Anda dapat mencocokkan www.example.com/users/{id} untuk mengekstrak argumen id ke dalam kunci tujuan. Untuk mengetahui informasi selengkapnya, lihat artikel Mencocokkan deep link URI.

Membangun back stack sintetis

Untuk menentukan cara membuat tumpukan kembali sintetis dari kecocokan yang berhasil, gunakan BackStackMatcher. Daripada membuat instance BackStackMatcher secara langsung, panggil fungsi ekstensi withBackStack di DeepLinkMatcher lain. withBackStack membungkus penerima dalam BackStackMatcher yang menampilkan BackStackMatchResult yang berisi data sebelumnya sintetis List. Karena BackStackMatchResult mendelegasikan perbandingan ke hasil kecocokan yang mendasarinya, membungkus pencocok dalam withBackStack akan mempertahankan peringkat kecocokan aslinya.

Untuk menangani data sebelumnya yang dihasilkan di aktivitas Anda, lihat Mencocokkan permintaan masuk.