پشتیبانی از لینک های عمیق

از نسخه ۱.۲.۰ به بعد، Navigation 3 از لینک‌دهی عمیق به مقاصد در برنامه شما با استفاده از کلاس‌های DeepLinkRequest و DeepLinkMatcher پشتیبانی می‌کند.

برای پشتیبانی از لینک‌های عمیق در برنامه خود، مراحل زیر را انجام دهید:

  1. فیلترهای intent را در AndroidManifest.xml خود تعریف کنید تا مشخص کنید برنامه شما کدام URI ها را می تواند مدیریت کند.
  2. نمونه‌های DeepLinkMatcher ایجاد کنید تا درخواست‌های ورودی را به کلیدهای ناوبری شما نگاشت کند.
  3. درخواست‌های ورودی را در متد onCreate یا onNewIntent مربوط به activity خود تطبیق دهید و back stack خود را بر اساس آن به‌روزرسانی کنید.

ایجاد یک DeepLinkRequest

یک DeepLinkRequest نشان دهنده یک لینک عمیق ورودی است. این شامل یک DeepLinkUri و RequestExtras اختیاری با اطلاعات اضافی، مانند اقدام هدف یا نوع MIME، است.

امکانات اضافی DeepLinkRequest را ارائه دهید

برای ذخیره اطلاعات اضافی مربوط به لینک عمیق، از کلاس RequestExtras استفاده کنید. برای تعریف و نمونه‌سازی extraها از نظر نوع ایمن، این کتابخانه رابط RequestExtrasKey و requestExtras DSL را ارائه می‌دهد.

علاوه بر این، این کتابخانه دو کلید اضافی و کمک‌کننده‌های مرتبط ارائه می‌دهد:

  • MimeTypeExtrasKey : برای ذخیره یک String از نوع MIME استفاده می‌شود.
  • ActionExtrasKey (فقط اندروید): برای ذخیره String اکشنِ یک Intent استفاده می‌شود.

برای تعریف موارد اضافی سفارشی خود، رابط RequestExtrasKey را با یک ژنریک تایپ شده پیاده‌سازی کنید:

همچنین می‌توانید از emptyRequestExtras() برای ساخت یک نمونه خالی استفاده کنید، یا موارد اضافی را با استفاده از عملگرهای + ( plus ) و - ( minus ) ترکیب کنید.

ایجاد یک DeepLinkRequest از یک Intent

در اندروید، می‌توانید مستقیماً از یک Intent یک DeepLinkRequest ایجاد کنید. وقتی به این روش ساخته شود، DeepLinkRequest به صورت زیر ساخته می‌شود:

  • uri از فیلد data intent کپی می‌شود.
  • اگر null نباشد، نوع MIME و اکشن‌های اضافی از فیلدهای intent مربوطه تنظیم می‌شوند.
  • تمام intent.extras که مقادیر غیر تهی دارند، به عنوان یک SavedState در DeepLinkRequest.IntentExtrasKey ذخیره می‌شوند.
  • هرگونه ویژگی اضافی ارائه شده با استفاده از پارامتر extras اضافه می‌شود.

یک DeepLinkMatcher نمونه‌های DeepLinkRequest ورودی را به کلیدهای ناوبری نگاشت می‌کند که می‌توانند به back stack برنامه شما اضافه شوند. Navigation 3 سه matcher داخلی ارائه می‌دهد: UriDeepLinkMatcher برای تطبیق URI مبتنی بر الگو، StaticKeyDeepLinkMatcher برای لینک‌های پایه و BackStackMatcher برای ساخت back stack های مصنوعی. این کتابخانه همچنین از matcher های سفارشی برای موارد استفاده‌ای که توسط matcher های داخلی پوشش داده نمی‌شوند، پشتیبانی می‌کند.

برای اطلاعات بیشتر، به ایجاد DeepLinkMatchers مراجعه کنید.

فیلترهای هدف را اضافه کنید

برای فعال کردن یک لینک عمیق برای شروع فعالیت خود، باید عناصر <intent-filter> منطبق را در AndroidManifest.xml برنامه خود تعریف کنید. برای اطلاعات بیشتر، به بخش «افزودن فیلترهای intent برای لینک‌های ورودی » مراجعه کنید.

مطابقت با درخواست ورودی

پس از ایجاد نمونه‌های DeepLinkMatcher ، می‌توانید درخواست‌های ورودی را در activity خود مطابقت دهید.

برای تطبیق درخواست ورودی، مراحل زیر را انجام دهید:

  1. نمونه‌های DeepLinkMatcher خود را نمونه‌سازی کنید .
  2. تمام نمونه‌های DeepLinkMatcher خود را، چه به صورت صریح و چه با استفاده از multibindings ، جمع‌آوری کنید .
  3. یک DeepLinkRequest از Intent ورودی ایجاد کنید .
  4. درخواست را با تمام تطبیق‌دهنده‌ها مطابقت دهید و بهترین تطابق را پیدا کنید.
  5. پشته پشتی را از نتیجه تطبیق ایجاد کنید .