السماح لتطبيقات الويب التقدّمية المثبَّتة بمعالجة الروابط التي تستخدم بروتوكولاً معيّنًا للحصول على تجربة أكثر تكاملاً
معلومات أساسية عن المخططات (المعروفة أيضًا باسم البروتوكولات)
مُعرّف الموارد المنتظم (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، التي لا تتوفّر إلا للمحتوى الآمن،
registerProtocolHandler()
للمواقع الإلكترونية تسجيل قدرتها على فتح أو معالجة مخططات عناوين URL معيّنة. لذلك، على المواقع الإلكترونية استدعاء الطريقة على النحو التالي: navigator.registerProtocolHandler(scheme, url). يتم تعريف المَعلمتَين على النحو التالي:
scheme: سلسلة تحتوي على البروتوكول الذي يريد الموقع الإلكتروني معالجته.url: سلسلة تحتوي على عنوان URL الخاص بالمعالج. يجب أن يتضمّن عنوان URL هذا الرمز%sكعنصر نائب سيتم استبداله بعنوان URL الذي تم إلغاء أحرفه الخاصة والذي سيتم معالجته.
يجب أن يكون المخطط أحد
المخططات المدرَجة في القائمة المسموح بها
(مثل mailto أو bitcoin أو magnet) أو يبدأ بـ web+، يليه حرف واحد على الأقل أو
أكثر من أحرف ASCII الصغيرة بعد البادئة web+، مثل 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>. - يؤدي ذلك إلى انتقال المتصفّح إلى عنوان URL التالي:
https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. بعد فك ترميز عنوان URL لسلسلة البحث، يصبح?type=web+coffee://latte-macchiato.
ما هي معالجة البروتوكول؟
تتمحور آلية تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية الحالية حول توفير تسجيل معالج البروتوكول كجزء من عملية تثبيت تطبيق ويب تقدّمي من خلال ملف البيان الخاص به. بعد تسجيل تطبيق ويب تقدّمي كمعالج بروتوكول، عندما ينقر المستخدم على رابط تشعّبي يتضمّن مخططًا معيّنًا، مثل mailto أو bitcoin أو web+music من متصفّح أو تطبيق خاص بمنصة معيّنة، سيتم فتح تطبيق الويب التقدّمي المسجَّل واستلام عنوان URL. من المهم ملاحظة أنّ كلاً من التسجيل المقترَح المستند إلى ملف البيان وطريقة registerProtocolHandler() التقليدية يؤديان أدوارًا متشابهة جدًا من الناحية العملية، مع السماح في الوقت نفسه بإمكانية تقديم تجارب مستخدم تكميلية:
- تشمل أوجه التشابه المتطلبات المتعلقة بقائمة المخططات المسموح بتسجيلها، واسم المَعلمات وتنسيقها، وما إلى ذلك.
- تكون الاختلافات في التسجيل المستند إلى ملف البيان طفيفة، ولكن قد تكون مفيدة لتحسين تجربة مستخدمي تطبيقات الويب التقدّمية. على سبيل المثال، قد لا يتطلب تسجيل تطبيقات الويب التقدّمية المستند إلى ملف البيان إجراءً إضافيًا من جانب المستخدم باستثناء عملية تثبيت تطبيق الويب التقدّمي التي بدأها المستخدم.
حالات الاستخدام
- في تطبيق ويب تقدّمي لمعالجة النصوص، يعثر المستخدم في مستند على رابط يؤدي إلى عرض تقديمي مثل
web+presentations://deck2378465. عندما ينقر المستخدم على الرابط، يتم فتح تطبيق الويب التقدّمي للعرض التقديمي تلقائيًا في النطاق الصحيح ويتم عرض مجموعة الشرائح. - في تطبيق محادثات خاص بمنصة معيّنة، يتلقّى المستخدم في رسالة محادثة رابطًا يؤدي إلى عنوان URL
magnet. عند النقر على الرابط، يتم تشغيل تطبيق ويب تقدّمي مثبَّت لتنزيل ملفات التورنت ويبدأ التنزيل. - ثبَّت المستخدم تطبيق ويب تقدّمي لبث الموسيقى. عندما يشارك أحد الأصدقاء رابطًا لأغنية مثل
web+music://songid=1234&time=0:13وينقر المستخدم عليه، سيتم تشغيل تطبيق الويب التقدّمي لبث الموسيقى تلقائيًا في نافذة مستقلة.
كيفية استخدام تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية
تستند واجهة برمجة التطبيقات لتسجيل معالج بروتوكول عنوان URL بشكل كبير إلى navigator.registerProtocolHandler(). هذه المرة، يتم تمرير المعلومات بشكل إعلاني باستخدام
ملف بيان تطبيق الويب في سمة جديدة تُسمى "protocol_handlers" تأخذ صفيفًا من
الكائنات يتضمّن المفتاحَين المطلوبَين "protocol" و"url". يوضّح مقتطف الرمز التالي كيفية تسجيل web+tea وweb+coffee. القيم هي سلاسل تحتوي على عنوان URL الخاص بالمعالج مع العنصر النائب المطلوب %s لعنوان URL الذي تم إلغاء أحرفه الخاصة.
{
"protocol_handlers": [
{
"protocol": "web+tea",
"url": "/tea?type=%s"
},
{
"protocol": "web+coffee",
"url": "/coffee?type=%s"
}
]
}
تسجيل تطبيقات متعددة للبروتوكول نفسه
إذا سجّلت تطبيقات متعددة نفسها كمعالجات للمخطط نفسه، على سبيل المثال، بروتوكول mailto، سيظهر للمستخدم منتقي في نظام التشغيل وسيسمح له بتحديد أي من المعالجات المسجَّلة لاستخدامه.
تسجيل التطبيق نفسه لبروتوكولات متعددة
يمكن للتطبيق نفسه تسجيل نفسه لبروتوكولات متعددة، كما هو موضّح في عينة تعليمات برمجية.
تحديثات التطبيق وتسجيل المعالج
تتم مزامنة عمليات تسجيل المعالج مع أحدث إصدار من ملف البيان الذي يوفّره التطبيق. هناك حالتان:
- يؤدي التحديث الذي يضيف معالجات جديدة إلى تسجيل المعالج (بشكل منفصل عن تثبيت التطبيق).
- يؤدي التحديث الذي يزيل المعالجات إلى إلغاء تسجيل المعالج (بشكل منفصل عن إلغاء تثبيت التطبيق).
تصحيح أخطاء معالج البروتوكول في "أدوات مطوّري البرامج"
انتقِل إلى قسم معالجات البروتوكول باستخدام لوحة التطبيق > ملف البيان. يمكنك عرض جميع البروتوكولات المتاحة واختبارها هنا.

الاعتبارات الأمنية
بما أنّ تثبيت تطبيق الويب التقدّمي يتطلب أن يكون السياق آمنًا، فإنّ معالجة البروتوكول تكتسب هذا القيد. لا يتم عرض قائمة معالجات البروتوكول المسجَّلة على الويب بأي شكل من الأشكال، لذا لا يمكن استخدامها كعامل تتبّع.
محاولات التنقّل التي لم يبدأها المستخدم
قد لا تفتح محاولات التنقّل التي لم يبدأها المستخدم، ولكنها تتم بشكل آلي، التطبيقات. لا يمكن استخدام عنوان URL الخاص بالبروتوكول المخصّص إلا في سياقات التصفّح على المستوى الأعلى، وليس، على سبيل المثال، كعنوان URL لإطار iframe.
القائمة المسموح بها من البروتوكولات
كما هو الحال مع registerProtocolHandler()، هناك قائمة مسموح بها من البروتوكولات التي يمكن للتطبيقات تسجيلها لمعالجتها.
طلب الموافقة
في أول عملية تشغيل لتطبيق الويب التقدّمي بسبب بروتوكول تم استدعاؤه، سيظهر للمستخدم مربّع حوار الأذونات. سيعرض مربّع الحوار هذا اسم التطبيق ومصدره، ويسأل المستخدم ما إذا كان مسموحًا للتطبيق بمعالجة الروابط من البروتوكول. إذا رفض المستخدم مربّع حوار الأذونات، سيتجاهل نظام التشغيل معالج البروتوكول المسجَّل. لإلغاء تسجيل معالج البروتوكول، على المستخدم إلغاء تثبيت تطبيق الويب التقدّمي الذي سجّله. سيلغي المتصفّح أيضًا تسجيل معالج البروتوكول إذا اختار المستخدم "تذكُّر خياري" ثم اختار "عدم السماح".
الملاحظات
يريد فريق Chromium معرفة تجاربك مع تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية.
أخبرنا عن تصميم واجهة برمجة التطبيقات
هل هناك جانب في واجهة برمجة التطبيقات لا يعمل كما توقعت؟ أو هل هناك طرق أو سمات مفقودة تحتاج إليها لتنفيذ فكرتك؟ هل لديك سؤال أو تعليق على النموذج الأمني؟ يمكنك الإبلاغ عن مشكلة في المواصفات في مستودع GitHub المقابل، أو إضافة أفكارك إلى مشكلة حالية.
الإبلاغ عن مشكلة في التنفيذ
هل عثرت على خطأ في تنفيذ Chromium؟ أو هل يختلف التنفيذ عن المواصفات؟
يمكنك الإبلاغ عن خطأ على new.crbug.com. تأكَّد من تضمين أكبر قدر ممكن من التفاصيل،
والتعليمات الخاصة بإعادة إنتاج الخطأ، وأدخِل UI>Browser>WebAppInstalls في مربّع المكوّنات.
إظهار الدعم لواجهة برمجة التطبيقات
هل تخطط لاستخدام تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية؟ يساعد دعمك العلني فريق Chromium في تحديد أولويات الميزات ويوضّح لمورّدي المتصفّحات الآخرين مدى أهمية دعمها.
يمكنك مشاركة كيفية التخطيط لاستخدامها في سلسلة محادثات WICG Discourse. أرسِل تغريدة إلى
@ChromiumDev باستخدام الهاشتاغ
#ProtocolHandler
وأخبرنا بمكان استخدامها وكيفية ذلك.
روابط مفيدة
الإقرارات
تم تنفيذ وتسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية من قِبل Fabio Rocha و Diego González و Connor Moody و Samuel Tang من فريق Microsoft Edge. راجع هذا المستند Joe Medley وFabio Rocha.