Membuat instance DeepLinkMatcher

Untuk memetakan instance DeepLinkRequest yang masuk ke kunci yang dapat ditambahkan ke data sebelumnya aplikasi, 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 mungkin cocok dengan satu permintaan, MatchResult menerapkan Comparable untuk memberi peringkat hasil dan memilih kecocokan terbaik.

Parameter jenis

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

  • T : Any: Jenis kunci 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 pencocokan khusus tanpa memerlukan downcasting yang tidak dicentang:

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 berbagai tindakan, seperti melihat versus mengedit:

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

Menggunakan matcher yang disediakan

Library ini mencakup tiga implementasi DeepLinkMatcher standar: StaticKeyDeepLinkMatcher, UriDeepLinkMatcher, dan BackStackMatcher. Jika pencocok ini tidak memenuhi persyaratan aplikasi, 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 disediakan.

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 informasi selengkapnya, lihat Mencocokkan deep link URI.

Membuat data sebelumnya sintetis

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

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