ایجاد نمونه‌های 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 را برای فیلتر کردن درخواست‌ها قبل‌از ارزیابی آن‌ها مشخص کنند.

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

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

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

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

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

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

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

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

ساختن پشته برگشت مصنوعی

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

برای مدیریت پشته برگشت حاصل در فعالیتتان، به مطابقت دادن درخواست ورودی مراجعه کنید.