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

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

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

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

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

برخی شرایط خاص مانند کلیک وسط روی یک لینک (یا کلیک راست و سپس "باز کردن در تب جدید") معمولاً باعث ایجاد رفتار ضبط لینک نمی‌شوند. اینکه یک لینک 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. سایت ۱
  2. سایت ۲

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

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

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

مهاجرت به API هندلر لانچ

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

در کرومیوم ۹۸، ضبط خودکار لینک اکنون یک رفتار انتخابی کاربر است و نه در زمان نصب یک برنامه وب. برای فعال کردن ضبط لینک، کاربر باید برنامه نصب شده را از مرورگر با استفاده از Open with اجرا کند و گزینه Remember my choice را انتخاب کند.

نمونه‌ای از تنظیم «باز کردن با» یک برنامه نصب‌شده با فعال بودن گزینه «انتخاب من را به خاطر بسپار»

از طرف دیگر، کاربران می‌توانند در صفحه تنظیمات مدیریت برنامه، ضبط لینک را برای یک برنامه وب خاص فعال یا غیرفعال کنند.

نمونه‌ای از صفحه تنظیمات یک برنامه نصب شده.

قابلیت ضبط لینک فعلاً فقط برای سیستم‌عامل کروم او اس (ChromeOS) در دسترس است و پشتیبانی از آن برای ویندوز، مک او اس و لینوکس در حال انجام است.

API هندلر را راه‌اندازی کنید

کنترل یک ناوبری ورودی به Launch Handler API منتقل می‌شود، که به برنامه‌های وب اجازه می‌دهد تا تصمیم بگیرند که چگونه یک برنامه وب در موقعیت‌های مختلف مانند ضبط لینک، اشتراک‌گذاری هدف یا مدیریت فایل و غیره راه‌اندازی شود. برای مهاجرت از Declarative Link Capturing API به Launch Handler API:

  1. سایت خود را برای نسخه آزمایشی Launch Handler ثبت کنید و کلید نسخه آزمایشی Origin را در برنامه وب خود قرار دهید.
  2. یک ورودی "launch_handler" به مانیفست سایت خود اضافه کنید.

    • برای استفاده از "capture_links": "new-client" ، "launch_handler": { "route_to": "new-client" } را اضافه کنید.
    • برای استفاده از "capture_links": "existing-client-navigate" ، "launch_handler": { "route_to": "existing-client-navigate" } را اضافه کنید.
    • برای استفاده از "capture_links": "existing-client-event" (که هرگز در نسخه آزمایشی Declarative Link Capturing origin پیاده‌سازی نشده بود)، این کد را اضافه کنید: "launch_handler": { "route_to": "existing-client-retain" } . با استفاده از این گزینه، صفحات موجود در محدوده برنامه شما دیگر هنگام ضبط ناوبری لینک، به طور خودکار پیمایش نخواهند شد. برای فعال کردن پیمایش، باید LaunchParams در جاوا اسکریپت با فراخوانی window.launchQueue.setConsumer() مدیریت کنید.

فیلد capture_links و ثبت نام آزمایشی Declarative Link Capturing origin تا 30 مارس 2022 معتبر هستند. این امر تضمین می‌کند که کاربران Chromium 97 و قبل از آن همچنان می‌توانند برنامه وب را با لینک ضبط شده اجرا کنند.

برای جزئیات بیشتر، به بخش «نحوه راه‌اندازی برنامه خود را کنترل کنید» مراجعه کنید.

بازخورد

تیم کرومیوم می‌خواهد از تجربیات شما در مورد ضبط لینک‌های اعلانی مطلع شود.

در مورد طراحی API به ما بگویید

آیا چیزی در مورد API وجود دارد که آنطور که انتظار داشتید کار نمی‌کند؟ یا متدها یا ویژگی‌هایی وجود ندارند که برای پیاده‌سازی ایده خود به آنها نیاز دارید؟ در مورد مدل امنیتی سؤال یا نظری دارید؟ یک مشکل مشخصات را در مخزن مربوطه GitHub ثبت کنید، یا نظرات خود را به یک مشکل موجود اضافه کنید.

گزارش مشکل در پیاده‌سازی

آیا در پیاده‌سازی کرومیوم اشکالی پیدا کردید؟ یا پیاده‌سازی با مشخصات متفاوت است؟ یک اشکال را در new.crbug.com ثبت کنید. حتماً تا حد امکان جزئیات، دستورالعمل‌های تکثیر را ذکر کنید و UI>Browser>WebAppInstalls در کادر Components وارد کنید.

نمایش پشتیبانی از API

آیا قصد دارید از ضبط لینک اعلانی استفاده کنید؟ حمایت عمومی شما به تیم کرومیوم کمک می‌کند تا ویژگی‌ها را در اولویت قرار دهد و به سایر فروشندگان مرورگر نشان می‌دهد که پشتیبانی از آنها چقدر حیاتی است.

با استفاده از هشتگ #DeclarativeLinkCapturing یک توییت به @ChromiumDev ارسال کنید و به ما بگویید که کجا و چگونه از آن استفاده می‌کنید.

لینک‌های مفید

تقدیرنامه‌ها

ضبط لینک اعلانی توسط مت گیوکا با ورودی‌های آلن کاتر و دومینیک نگ مشخص شد. API توسط آلن کاتر پیاده‌سازی شد. این سند توسط جو مدلی ، مت گیوکا، آلن کاتر و شونیا شیشیدو بررسی شد.