ایجاد نمونه‌های DeepLinkMatcher

برای نگاشت نمونه‌های ورودی DeepLinkRequest به کلیدهایی که می‌توانند به back stack برنامه شما اضافه شوند، نمونه‌های DeepLinkMatcher را تعریف می‌کنید.

DeepLinkMatcher یک کلاس انتزاعی است که شامل دو متد match و matchRequest می‌باشد. زیرکلاس‌ها باید matchRequest پیاده‌سازی کنند که یک DeepLinkRequest می‌گیرد و در صورت مطابقت درخواست، DeepLinkMatcher.MatchResult را برمی‌گرداند، در غیر این صورت null .

از آنجا که ممکن است چندین تطبیق‌دهنده با یک درخواست مطابقت داشته باشند، MatchResult Comparable برای رتبه‌بندی نتایج و انتخاب بهترین تطبیق استفاده می‌کند.

پارامترهای نوع

کلاس DeepLinkMatcher دو پارامتر نوع عمومی را تعریف می‌کند: DeepLinkMatcher<T : Any, R : DeepLinkMatcher.MatchResult<T>> .

  • T : Any : نوع کلید ناوبری مقصد (مانند UserProfileKey یا NavKey ) که هنگام تطابق لینک عمیق برگردانده می‌شود.
  • R : DeepLinkMatcher.MatchResult<T> : زیرنوع خاص MatchResult که توسط matchRequest و match برگردانده می‌شود.

پارامتر نوع دوم، R ، اطلاعات تطبیق تخصصی را بدون نیاز به downcasting بدون کنترل حفظ می‌کند:

درخواست‌های پیش‌فیلتر

پیاده‌سازی‌های DeepLinkMatcher می‌توانند فهرستی از نمونه‌های DeepLinkMatcher.Filter را برای فیلتر کردن درخواست‌ها قبل از ارزیابی آنها مشخص کنند.

این کتابخانه شامل توابع کمکی برای ایجاد فیلترهای رایج است:

این رویکرد به شما امکان می‌دهد از الگوی URI یکسان برای اقدامات مختلف، مانند مشاهده در مقابل ویرایش، استفاده مجدد کنید:

از آنجا که Filter یک رابط تابعی (SAM) است، می‌توانید فیلترها را با استفاده از عبارات لامبدا نیز ایجاد کنید:

از تطبیق‌دهنده‌های ارائه شده استفاده کنید

این کتابخانه شامل سه پیاده‌سازی استاندارد DeepLinkMatcher است: StaticKeyDeepLinkMatcher ، UriDeepLinkMatcher و BackStackMatcher . اگر این تطبیق‌دهنده‌ها الزامات برنامه شما را برآورده نمی‌کنند، می‌توانید تطبیق‌دهنده‌های لینک عمیق سفارشی ایجاد کنید .

برای لینک‌های عمیق پایه که آرگومانی برای استخراج ندارند، از StaticKeyDeepLinkMatcher برای مطابقت با درخواست‌هایی که تمام فیلترهای ارائه شده را برآورده می‌کنند، استفاده کنید.

برای مثال، برای مدیریت intentها برای ACTION_APPLICATION_PREFERENCES :

برای تطبیق URI های سلسله مراتبی با الگوها و استخراج آرگومان‌ها، از UriDeepLinkMatcher استفاده کنید. برای مثال، می‌توانید www.example.com/users/{id} را تطبیق دهید تا آرگومان id را در یک کلید مقصد استخراج کنید. برای اطلاعات بیشتر، به Match URI deep links مراجعه کنید.

یک پشته مصنوعی بسازید

برای تعریف نحوه ساخت یک backstack مصنوعی از یک تطابق موفق، از BackStackMatcher استفاده کنید. به جای نمونه‌سازی مستقیم BackStackMatcher ، تابع افزونه withBackStack را در DeepLinkMatcher دیگری فراخوانی کنید. withBackStack گیرنده را در یک BackStackMatcher قرار می‌دهد که یک BackStackMatchResult حاوی یک List backstack مصنوعی را برمی‌گرداند. از آنجا که BackStackMatchResult مقایسه با نتیجه تطابق زیرین را محول می‌کند، قرار دادن یک matcher در withBackStack رتبه‌بندی تطابق اصلی آن را حفظ می‌کند.

برای مدیریت پشته برگشتی حاصل در فعالیت خود، به Match an incoming request مراجعه کنید.