ثبت کنترل کننده پروتکل URL برای PWA ها

برای یک تجربه یکپارچه‌تر، اجازه دهید PWA های نصب شده، لینک‌هایی را که از یک پروتکل خاص استفاده می‌کنند، مدیریت کنند.

پیشینه طرح‌ها (معروف به پروتکل‌ها)

شناسه منبع یکسان (URI) یک توالی فشرده از کاراکترها است که یک منبع انتزاعی یا فیزیکی را شناسایی می‌کند. هر URI با یک نام طرح شروع می‌شود که به مشخصاتی برای اختصاص شناسه‌ها در آن طرح اشاره دارد. به این ترتیب، نحو URI یک سیستم نامگذاری فدرال و قابل توسعه است که در آن مشخصات هر طرح ممکن است نحو و معنای شناسه‌ها را با استفاده از آن طرح بیشتر محدود کند. طرح‌ها همچنین به عنوان پروتکل شناخته می‌شوند. می‌توانید چند نمونه از طرح‌ها را ببینید.

tel:+1-816-555-1212
mailto:Jane.Doe@example.com
news:comp.infosystems.www.servers.unix
https://web.dev/

اصطلاح مکان‌یاب یکسان منبع (URL) به زیرمجموعه‌ای از URIها اشاره دارد که علاوه بر شناسایی یک منبع، با توصیف مکانیسم دسترسی اولیه آن (مثلاً موقعیت شبکه‌ای آن)، وسیله‌ای برای مکان‌یابی منبع فراهم می‌کنند.

پیشینه متد registerProtocolHandler()

متد registerProtocolHandler() Navigator که فقط محتوای امن دارد، به سایت‌ها اجازه می‌دهد تا توانایی خود را برای باز کردن یا مدیریت طرح‌های URL خاص ثبت کنند. بنابراین، سایت‌ها باید این متد را به صورت زیر فراخوانی کنند: navigator.registerProtocolHandler(scheme, url) . دو پارامتر به شرح زیر تعریف می‌شوند:

  • scheme : رشته‌ای حاوی پروتکلی که سایت می‌خواهد مدیریت کند.
  • url : رشته‌ای حاوی آدرس اینترنتی (URL) مربوط به کنترل‌کننده. این آدرس اینترنتی باید شامل %s باشد، به عنوان یک نگهدارنده که با آدرس اینترنتیِ escape شده‌ای که قرار است کنترل شود، جایگزین خواهد شد.

این طرح یا باید یکی از طرح‌های فهرست‌شده در فهرست امن باشد (برای مثال، mailto ، bitcoin یا magnet ) یا با web+ شروع شود و به دنبال آن حداقل یک یا چند حرف کوچک ASCII بعد از پیشوند web+ قرار گیرد، مانند web+coffee .

برای روشن‌تر شدن این موضوع، یک مثال عینی از جریان را در اینجا می‌آوریم:

  1. کاربر از سایتی به آدرس https://coffeeshop.example.com/ بازدید می‌کند که فراخوانی زیر را انجام می‌دهد: navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s') .
  2. در مرحله‌ی بعد، هنگام بازدید از https://randomsite.example.com/ ، کاربر روی لینکی مانند <a href="web+coffee:latte-macchiato">All about latte macchiato</a> کلیک می‌کند.
  3. این باعث می‌شود مرورگر به آدرس اینترنتی زیر هدایت شود: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato . رشته جستجوی رمزگشایی‌شده‌ی آدرس اینترنتی، ?type=web+coffee://latte-macchiato را می‌خواند.

مدیریت پروتکل چیست؟

مکانیزم فعلی ثبت کنترل‌کننده پروتکل URL برای PWAها ، در مورد ارائه ثبت کنترل‌کننده پروتکل به عنوان بخشی از نصب PWA از طریق مانیفست آن است. پس از ثبت یک PWA به عنوان کنترل‌کننده پروتکل، هنگامی که کاربر روی یک لینک با طرح خاص مانند mailto ، bitcoin یا web+music از یک مرورگر یا یک برنامه خاص پلتفرم کلیک می‌کند، PWA ثبت شده باز شده و URL را دریافت می‌کند. توجه به این نکته مهم است که هم ثبت مبتنی بر مانیفست پیشنهادی و هم registerProtocolHandler() سنتی در عمل نقش‌های بسیار مشابهی ایفا می‌کنند، در حالی که همچنان امکان تجربیات کاربری مکمل را فراهم می‌کنند:

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

موارد استفاده

  • در یک PWA پردازش متن، کاربر در یک سند با لینکی به یک ارائه مانند web+presentations://deck2378465 مواجه می‌شود. وقتی کاربر روی لینک کلیک می‌کند، PWA ارائه به طور خودکار در محدوده صحیح باز می‌شود و مجموعه اسلایدها را نشان می‌دهد.
  • در یک برنامه چت مخصوص پلتفرم، کاربر در یک پیام چت، لینکی به یک URL magnet دریافت می‌کند. با کلیک روی لینک، یک PWA تورنت نصب شده اجرا شده و شروع به دانلود می‌کند.
  • کاربر یک PWA پخش موسیقی نصب کرده است. وقتی دوستی لینکی از آهنگی مانند web+music://songid=1234&time=0:13 به اشتراک می‌گذارد و کاربر روی آن کلیک می‌کند، PWA پخش موسیقی به طور خودکار در یک پنجره مستقل اجرا می‌شود.

نحوه استفاده از ثبت نام کنترل کننده پروتکل URL برای PWA ها

API مربوط به ثبت کنترل‌کننده پروتکل URL، دقیقاً بر اساس navigator.registerProtocolHandler() مدل‌سازی شده است. فقط این بار اطلاعات به صورت اعلانی با استفاده از مانیفست برنامه وب در یک ویژگی جدید به نام "protocol_handlers" ارسال می‌شوند که آرایه‌ای از اشیاء را با دو کلید مورد نیاز "protocol" و "url" می‌گیرد. قطعه کد زیر نحوه ثبت web+tea و web+coffee را نشان می‌دهد. مقادیر، رشته‌هایی حاوی URL کنترل‌کننده به همراه %s placeholder مورد نیاز برای URL escape شده هستند.

{
  "protocol_handlers": [
    {
      "protocol": "web+tea",
      "url": "/tea?type=%s"
    },
    {
      "protocol": "web+coffee",
      "url": "/coffee?type=%s"
    }
  ]
}

چندین برنامه برای یک پروتکل ثبت نام می‌کنند

اگر چندین برنامه خود را به عنوان کنترل‌کننده برای یک طرح یکسان، مثلاً پروتکل mailto ، ثبت کنند، سیستم عامل یک انتخابگر به کاربر نشان می‌دهد و به او اجازه می‌دهد تصمیم بگیرد از کدام یک از کنترل‌کننده‌های ثبت‌شده استفاده کند.

همان برنامه برای چندین پروتکل ثبت نام می‌کند

همانطور که در نمونه کد مشاهده می‌کنید، یک برنامه می‌تواند خود را برای چندین پروتکل ثبت کند.

به‌روزرسانی‌های برنامه و ثبت نام هندلر

ثبت نام‌های Handler با آخرین نسخه manifest ارائه شده توسط برنامه هماهنگ می‌شوند. دو حالت وجود دارد:

  • به‌روزرسانی که کنترل‌کننده‌های جدیدی اضافه می‌کند، باعث ثبت کنترل‌کننده می‌شود (جدا از نصب برنامه).
  • به‌روزرسانی که کنترل‌کننده‌ها را حذف می‌کند، باعث لغو ثبت کنترل‌کننده می‌شود (جدا از حذف نصب برنامه).

اشکال زدایی کنترل کننده پروتکل در DevTools

با استفاده از پنجره Application > Manifest به بخش Protocol Handlers بروید. می‌توانید تمام پروتکل‌های موجود را در اینجا مشاهده و آزمایش کنید.

کنترل‌کننده‌های پروتکل در پنل مانیفست

ملاحظات امنیتی

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

تلاش‌های ناوبری بدون ابتکار کاربر

تلاش‌های ناوبری که توسط کاربر آغاز نمی‌شوند، اما برنامه‌ریزی‌شده هستند، ممکن است برنامه‌ها را باز نکنند. URL پروتکل سفارشی فقط می‌تواند در زمینه‌های مرور سطح بالا استفاده شود، اما نه، برای مثال، به عنوان URL یک iframe.

لیست مجاز پروتکل‌ها

درست مانند registerProtocolHandler() یک لیست مجاز از پروتکل‌هایی وجود دارد که برنامه‌ها می‌توانند برای مدیریت آنها ثبت نام کنند.

در اولین اجرای PWA به دلیل یک پروتکل فراخوانی شده، یک پنجره‌ی مجوز به کاربر نمایش داده می‌شود. این پنجره نام برنامه و مبدا برنامه را نمایش می‌دهد و از کاربر می‌پرسد که آیا برنامه مجاز به مدیریت لینک‌های پروتکل است یا خیر. اگر کاربر پنجره‌ی مجوز را رد کند، کنترل‌کننده‌ی پروتکل ثبت‌شده توسط سیستم عامل نادیده گرفته می‌شود. برای لغو ثبت کنترل‌کننده‌ی پروتکل، کاربر باید PWA ثبت‌شده را حذف نصب کند. اگر کاربر گزینه‌ی «انتخاب من را به خاطر بسپار» و «عدم اجازه» را انتخاب کند، مرورگر نیز کنترل‌کننده‌ی پروتکل را لغو ثبت می‌کند.

بازخورد

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

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

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

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

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

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

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

نحوه‌ی استفاده از آن را در تاپیک WICG Discourse به اشتراک بگذارید. با استفاده از هشتگ #ProtocolHandler یک توییت به @ChromiumDev ارسال کنید و به ما بگویید که کجا و چگونه از آن استفاده می‌کنید.

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

ثبت نام کنترل کننده پروتکل URL برای PWA ها توسط فابیو روچا ، دیگو گونزالس ، کانر مودی و ساموئل تانگ از تیم مایکروسافت اج پیاده سازی و مشخص شده است. این سند توسط جو مدلی و فابیو روچا بررسی شده است.