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

برای نگاشت نمونه‌های ورودی DeepLinkRequest به کلیدهایی که می‌توانند به پشته قبلی‌های برنامه‌تان اضافه شوند، نمونه‌های 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، اطلاعات مطابقت تخصصی را بدون نیاز به تبدیل نوع پایین‌رونده علامت‌نزده حفظ می‌کند:

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

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

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

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

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

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

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

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

برای مثال، برای رسیدگی به قصدها برای ACTION_APPLICATION_PREFERENCES:

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

ساختن پشته قبلی‌های مصنوعی

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

برای مدیریت پشته قبلی‌ها در فعالیتتان، مطابقت دادن درخواست ورودی را ببینید.