به برنامههای وب پیشروی نصبشده اجازه دهید پیوندهایی را که از پروتکل خاصی استفاده میکنند مدیریت کنند تا تجربه یکپارچهتری داشته باشید.
پیشینه طرحها (یا پروتکلها)
شناسه منبع یکسان (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()
روش Navigator secure-content-only
registerProtocolHandler()
به سایتها اجازه میدهد تواناییشان را برای باز کردن یا مدیریت طرحوارههای نشانی وب خاص ثبت کنند. بنابراین، سایتها باید
این روش را به این صورت فراخوانی کنند: navigator.registerProtocolHandler(scheme, url). این دو پارامتر بهصورت زیر تعریف میشوند:
scheme: رشتهای که حاوی پروتکلی است که سایت میخواهد آن را مدیریت کند.-
url: رشتهای حاوی نشانی وب گرداننده. این نشانی وب باید شامل%sبهعنوان جایبان باشد که با نشانی وب گریزدار برای رسیدگی جایگزین خواهد شد.
طرح باید یکی از
طرحهای فهرست امن
(برای مثال، mailto، bitcoin، یا magnet) باشد یا با web+ شروع شود و پساز پیشوند web+، حداقل یک یا چند حرف کوچک ASCII داشته باشد، مثل web+coffee.
برای روشنتر شدن این موضوع، در اینجا مثالی ملموس از این جریان آورده شده است:
- کاربر از سایتی در
https://coffeeshop.example.com/بازدید میکند که فراخوانی زیر را انجام میدهد:navigator.registerProtocolHandler('web+coffee', 'coffee?type=%s'). - بعداً، هنگام بازدید از
https://randomsite.example.com/، کاربر روی پیوندی مانند<a href="web+coffee:latte-macchiato">All about latte macchiato</a>کلیک میکند. - این کار باعث میشود مرورگر به نشانی وب زیر برود:
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. رشته جستجو رمزگشایی نشانی وب میشود و سپس?type=web+coffee://latte-macchiatoرا میخواند.
کنترل پروتکل چیست
مکانیزم فعلی ثبت مدیریتكننده پروتکل نشانی وب برای برنامههای وب پیشرو درباره ارائه ثبت مدیریتكننده پروتکل بهعنوان بخشی از نصب برنامه وب پیشرو ازطریق مانیفست آن است. پساز ثبت برنامه وب پیشرو بهعنوان
مدیریتکننده پروتکل، وقتی کاربر روی اَبَرپیوندی با طرحی خاص مثل mailto،
bitcoin، یا web+music از مرورگر یا برنامه خاص پلاتفرم کلیک میکند، برنامه وب پیشرو ثبتشده باز میشود
و نشانی وب را دریافت میکند. توجه به این نکته مهم است که هم ثبت پیشنهادی مبتنی بر مانیفست و هم
registerProtocolHandler() سنتی نقشهای بسیار مشابهی را در عمل ایفا میکنند، درحالیکه هنوز
امکان تجربههای کاربری مکمل را فراهم میکنند:
- شباهتها شامل الزامات مربوط به فهرست طرحهای مجاز برای ثبت، و نام و قالب پارامترها و غیره است.
- تفاوتها در ثبت مبتنی بر مانیفست جزئی است، اما ممکن است برای بهبود تجربه کاربران «برنامه وب پیشرونده» مفید باشد. برای مثال، ثبت برنامه وب پیشرونده مبتنی بر مانیفست ممکن است به کنش کاربر دیگری بهجز نصب برنامه وب پیشرونده توسط کاربر نیاز نداشته باشد.
موارد استفاده
- در برنامه وب پیشروی پردازش کلمه، کاربر در سند با پیوندی به ارائه مواجه میشود، مانند
web+presentations://deck2378465. وقتی کاربر روی پیوند کلیک میکند، برنامه وب پیشروی ارائه بهطور خودکار در دامنه صحیح باز میشود و دسته اسلاید را نشان میدهد. - در برنامه گپ مختص پلاتفرم، کاربر در پیام گپ پیوندی به نشانی وب
magnetدریافت میکند. با کلیک کردن روی پیوند، برنامه وب پیشروی تورنت نصبشده راهاندازی میشود و بارگیری را شروع میکند. - کاربر برنامه وب پیشرو جاریسازی موسیقی نصب کرده است. وقتی دوستی پیوند آهنگی مثل
web+music://songid=1234&time=0:13را همرسانی میکند و کاربر روی آن کلیک میکند، برنامه وب پیشروی جاریسازی موسیقی بهطور خودکار در پنجرهای مستقل راهاندازی میشود.
نحوه استفاده از ثبت مدیریتكننده پروتکل نشانی وب برای برنامههای وب پیشرو
میانای برنامهسازی کاربردی برای ثبت مدیریتكننده پروتکل نشانی وب بهطور دقیق از
navigator.registerProtocolHandler() الگوبرداری شده است. فقط این بار اطلاعات بهصورت اعلانی بااستفاده از مانیفست برنامه وب در ویژگی جدیدی بهنام "protocol_handlers" منتقل میشود که آرایهای از اشیاء را با دو کلید الزامی "protocol" و "url" میگیرد. تکهکد زیر نحوه ثبت web+tea و web+coffee را نشان میدهد. مقادیر رشتههایی هستند که حاوی نشانی وب گرداننده با
جایبان %s لازم برای نشانی وب گریز هستند.
{
"protocol_handlers": [
{
"protocol": "web+tea",
"url": "/tea?type=%s"
},
{
"protocol": "web+coffee",
"url": "/coffee?type=%s"
}
]
}
چند برنامه برای یک پروتکل ثبتنام میکنند
اگر چند برنامه خودشان را بهعنوان رسیدگیکننده برای یک طرح ثبت کنند، برای مثال، پروتکل mailto، سیستمعامل یک انتخابگر به کاربر نشان میدهد و به او اجازه میدهد تصمیم بگیرد از کدامیک از رسیدگیکنندههای ثبتشده استفاده کند.
یک برنامه برای چند پروتکل ثبتنام میکند
همانطور که در نمونه کد میبینید، یک برنامه میتواند خودش را برای چندین پروتکل ثبت کند.
بهروزرسانیهای برنامه و ثبتنام گرداننده
ثبتهای گرداننده با جدیدترین نسخه مانیفست ارائهشده توسط برنامه همگامسازی میشود. دو حالت وجود دارد:
- بهروزرسانیای که گردانندههای جدیدی اضافه میکند، ثبت گرداننده را راهاندازی میکند (جدا از نصب برنامه).
- بهروزرسانیای که گردانندهها را برمیدارد، لغو ثبت گرداننده را راهاندازی میکند (جدا از حذف نصب برنامه).
اشکالزدایی کنترلکننده پروتکل در DevTools
بااستفاده از قاب برنامه > مانیفست، به بخش مدیران پروتکل پیمایش کنید. در اینجا میتوانید همه پروتکلهای دردسترس را مشاهده و آزمایش کنید.

ملاحظات امنیتی
ازآنجاییکه نصب PWA مستلزم ایمن بودن بافتار است، مدیریت پروتکل این محدودیت را به ارث میبرد. فهرست کنترلکنندههای پروتکل ثبتشده بههیچوجه در وب نمایش داده نمیشود، بنابراین نمیتوان از آن بهعنوان بردار اثرانگشت استفاده کرد.
تلاشهای ناوبری که کاربر شروع نکرده است
تلاشهای پیمایشی که توسط کاربر آغاز نشدهاند، اما برنامهای هستند، ممکن است برنامهها را باز نکنند. نشانی وب پروتکل سفارشی فقط میتواند در زمینههای مرور سطح بالا استفاده شود، اما برای مثال، بهعنوان نشانی وب iframe قابلاستفاده نیست.
فهرست مجاز پروتکلها
درست مانند registerProtocolHandler()، فهرست مجاز پروتکلهایی وجود دارد که برنامهها میتوانند برای رسیدگی به آنها ثبتنام کنند.
پیامواره رضایت
در اولین راهاندازی برنامه وب پیشرونده بهدلیل پروتکل فراخواندهشده، کادر گفتگوی اجازه به کاربر نشان داده میشود. این کادر گفتگو نام برنامه و منبع برنامه را نمایش میدهد و از کاربر میپرسد که آیا برنامه مجاز است پیوندهای پروتکل را مدیریت کند یا نه. اگر کاربر کادر گفتگوی اجازه را رد کند، سیستمعامل گرداننده پروتکل ثبتشده را نادیده میگیرد. برای لغو ثبت مدیریتكننده پروتکل، کاربر باید برنامه وب پیشرویی را که آن را ثبت کرده است حذف نصب کند. اگر کاربر «انتخابم بهخاطر سپرده شود» و «مجاز نبودن» را انتخاب کند، مرورگر ثبتنام گرداننده پروتکل را نیز لغو میکند.
بازخورد
تیم Chromium میخواهد درباره تجربههای شما با ثبت مدیریتكننده پروتکل نشانی وب برای برنامههای وب پیشرو بشنود.
درباره طراحی میانای برنامهسازی کاربردی به ما بگویید
آیا چیزی درباره API وجود دارد که طبق انتظار شما کار نمیکند؟ یا روشها یا ویژگیهایی وجود دارد که برای پیادهسازی ایدهتان به آنها نیاز دارید؟ سؤال یا نظری درباره مدل امنیتی دارید؟ مشکل مشخصات را در مخزن GitHub مربوطه ثبت کنید یا نظرات خود را به مشکل موجود اضافه کنید.
گزارش کردن مشکل در پیادهسازی
آیا اشکالی در پیادهسازی Chromium پیدا کردهاید؟ یا پیادهسازی با مشخصات متفاوت است؟
اشکالی را در new.crbug.com ثبت کنید. حتماً تا جایی که میتوانید جزئیات،
دستورالعملهای بازتولید را اضافه کنید و UI>Browser>WebAppInstalls را در چارگوش مؤلفهها
وارد کنید.
نمایش پشتیبانی از API
آیا قصد دارید از ثبت مدیریتكننده پروتکل نشانی وب برای برنامههای وب پیشرو استفاده کنید؟ پشتیبانی عمومی شما به تیم Chromium کمک میکند ویژگیها را اولویتبندی کند و به دیگر فروشندگان مرورگر نشان میدهد که پشتیبانی از آنها چقدر حیاتی است.
نحوه استفاده از آن را در رشته WICG Discourse همرسانی کنید. بااستفاده از هشتگ
#ProtocolHandler
به
@ChromiumDev توییت ارسال کنید
و به ما بگویید کجا و چگونه از آن استفاده میکنید.
پیوندهای مفید
تصدیقنامهها
ثبت مدیریتكننده پروتکل نشانی وب برای برنامههای وب پیشرو توسط فابیو روشا، دیگو گونزالس، کانر مودی، و ساموئل تانگ از تیم Microsoft Edge پیادهسازی و مشخص شده است. این سند را جو مدلی و فابیو روشا بازبینی کردهاند.