انتخاب کنید که چگونه پیوندهای درون دامنه، PWA شما را با ضبط پیوند اعلامی باز کنند

ضبط لینک اعلامی چیست؟

کلیک کردن روی پیوندها در وب گاهی اوقات می تواند یک شگفتی خوشایند باشد. برای مثال، کلیک کردن روی پیوند صفحه وب به YouTube در دستگاه تلفن همراه، برنامه YouTube iOS یا Android را در صورت نصب باز می‌کند. اما وقتی YouTube PWA را روی یک رایانه رومیزی نصب می‌کنید و روی پیوندی کلیک می‌کنید، در یک تب مرورگر باز می‌شود.

اما پیچیده تر می شود. اگر پیوند نه در یک وب‌سایت، بلکه در پیام چتی که در یکی از برنامه‌های چت Google دریافت می‌کنید ظاهر شود، چه؟ در سیستم عامل های دسکتاپ، که مفهوم پنجره های برنامه جداگانه را دارند، اگر برنامه از قبل باز باشد، آیا باید برای هر کلیک پیوند یک پنجره یا تب جدید ایجاد شود؟ وقتی به آن فکر می‌کنید، راه‌های زیادی برای ثبت پیوندها و پیمایش‌ها وجود دارد، از جمله، اما نه محدود به، موارد زیر:

ضبط پیوند اعلامی پیشنهادی برای ویژگی مانیفست برنامه وب به نام "capture_links" است که به توسعه دهندگان این امکان را می دهد تا به طور اعلامی تعیین کنند که وقتی از مرورگر خواسته می شود به آدرس اینترنتی که در محدوده پیمایش برنامه است، از یک زمینه خارج از محدوده پیمایش حرکت کند، چه اتفاقی می افتد. اگر کاربر قبلاً در محدوده پیمایش باشد، این پیشنهاد اعمال نمی‌شود (به عنوان مثال، اگر کاربر یک برگه مرورگر باز داشته باشد که در محدوده است و روی پیوند داخلی کلیک کند).

برخی از شرایط خاص مانند کلیک وسط روی یک پیوند (یا کلیک راست و سپس "باز کردن در برگه جدید") معمولاً رفتار ضبط پیوند را تحریک نمی کنند. اینکه یک پیوند target=_self یا target=_blank باشد مهم نیست، بنابراین پیوندهایی که در یک پنجره مرورگر (یا پنجره PWA دیگری) کلیک می‌شوند، در PWA باز می‌شوند، حتی اگر معمولاً باعث ناوبری در همان برگه شوند.

موارد استفاده پیشنهادی

نمونه هایی از سایت هایی که ممکن است از این API استفاده کنند عبارتند از:

  • PWA هایی که می خواهند زمانی که کاربر روی پیوندی به آنها کلیک می کند، به جای یک برگه مرورگر، یک پنجره را باز کنند. در یک محیط دسکتاپ، اغلب منطقی است که چندین پنجره برنامه در یک زمان باز شود.
  • PWA های تک پنجره ای که در آن توسعه دهنده ترجیح می دهد فقط یک نمونه از برنامه را در هر زمان باز کند، با پیمایش های جدید که روی نمونه موجود تمرکز می کنند. موارد استفاده فرعی عبارتند از:
    • برنامه هایی که منطقی است فقط یک نمونه در حال اجرا برای آنها باشد (مانند پخش کننده موسیقی، یک بازی).
    • برنامه‌هایی که شامل مدیریت چند سند در یک نمونه واحد می‌شوند (مثلاً یک نوار برگه پیاده‌سازی شده با HTML).

فعال کردن از طریق about://flags

برای آزمایش با ضبط پیوند اعلامی به صورت محلی، بدون نشانه آزمایشی مبدا، پرچم #enable-desktop-pwas-link-capturing در about://flags فعال کنید.

چگونه می توان از ضبط پیوندهای اعلامی استفاده کرد؟

توسعه‌دهندگان می‌توانند با استفاده از فیلد مانیفست برنامه وب اضافی "capture_links" به‌طور شفاف تعیین کنند که چگونه پیوندها باید ثبت شوند. یک رشته یا آرایه ای از رشته ها را به عنوان مقدار خود می گیرد. اگر آرایه‌ای از رشته‌ها داده شود، عامل کاربر اولین مورد پشتیبانی‌شده در لیست را انتخاب می‌کند، به‌طور پیش‌فرض روی "none" . مقادیر زیر پشتیبانی می شوند:

  • "none" (پیش‌فرض): بدون پیوند گرفتن. پیوندهای کلیک شده منتهی به این محدوده PWA به طور معمول بدون باز کردن پنجره PWA حرکت می کنند.
  • "new-client" : هر پیوند کلیک شده یک پنجره PWA جدید در آن URL باز می کند.
  • "existing-client-navigate" : پیوند کلیک شده در یک پنجره PWA موجود، در صورتی که در دسترس باشد، یا در یک پنجره جدید در صورتی که وجود ندارد، باز می شود. اگر بیش از یک پنجره PWA وجود داشته باشد، مرورگر ممکن است خودسرانه یکی را انتخاب کند. اگر در حال حاضر هیچ پنجره ای باز نباشد، مانند "new-client" عمل می کند. 🚨 مراقب باشید! این گزینه به طور بالقوه منجر به از دست دادن داده ها می شود، زیرا صفحات را می توان خودسرانه از آنها دور کرد. سایت ها باید توجه داشته باشند که با انتخاب این گزینه، چنین رفتاری را انتخاب می کنند. این گزینه برای سایت‌های «فقط خواندنی» که اطلاعات کاربر را در حافظه نگه نمی‌دارند، مانند پخش‌کننده‌های موسیقی، بهترین کار را دارد. اگر صفحه‌ای که از آن دور می‌شوید دارای یک رویداد beforeunload باشد، کاربر این درخواست را قبل از تکمیل پیمایش مشاهده می‌کند.

نسخه ی نمایشی

نسخه ی نمایشی برای ضبط پیوند اعلامی در واقع از دو دمو تشکیل شده است که با هم تعامل دارند:

  1. https://continuous-harvest-tomato.glitch.me/
  2. https://hill-glitter-tree.glitch.me/

تصویر زیر نحوه تعامل این دو را نشان می دهد. آنها دو رفتار متفاوت از خود نشان می دهند، "new-client" و "existing-client-navigate" . حتماً برنامه‌ها را در حالت‌های مختلف، اجرا در یک تب یا به‌عنوان یک PWA نصب‌شده، آزمایش کنید تا تفاوت رفتار را ببینید.

امنیت و مجوزها

تیم Chromium با استفاده از اصول اصلی تعریف شده در کنترل دسترسی به ویژگی‌های قدرتمند پلتفرم وب ، از جمله کنترل کاربر، شفافیت و ارگونومی، ضبط پیوند اعلامی را طراحی و اجرا کرد. این API به سایت‌ها اجازه می‌دهد تا گزینه‌های کنترلی جدید بیشتری داشته باشند. اول، امکان باز کردن خودکار برنامه های نصب شده در یک پنجره. این از رابط کاربری موجود استفاده می کند، اما این امکان را برای سایت فراهم می کند که به طور خودکار آن را راه اندازی کند. دوم، قابلیت تمرکز یک پنجره موجود بر روی دامنه خود و فعال کردن رویدادی حاوی URL کلیک شده. این در نظر گرفته شده است تا به سایت اجازه دهد تا یک پنجره موجود را به یک صفحه جدید هدایت کند و جریان ناوبری پیش فرض HTML را لغو کند.

به راه اندازی API Handler مهاجرت کنید

نسخه آزمایشی اولیه API Declarative Link Capturing در 30 مارس 2022 برای Chromium 97 و پایین‌تر منقضی شد . مجموعه‌ای از ویژگی‌ها و APIهای جدید در Chromium 98 و بالاتر جایگزین می‌شود، که شامل ضبط پیوند توسط کاربر و Launch Handler API است.

در Chromium 98، ضبط خودکار پیوند اکنون به‌جای اینکه در زمان نصب به یک برنامه وب اعطا شود، یک رفتار انتخاب کاربر است. برای فعال کردن ضبط پیوند، کاربر باید یک برنامه نصب شده را از مرورگر با استفاده از Open with اجرا کند و انتخاب من را به خاطر بسپار را انتخاب کند.