تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية (PWA)

السماح لتطبيقات الويب التقدّمية المثبَّتة بمعالجة الروابط التي تستخدم بروتوكولاً معيّنًا للحصول على تجربة أكثر تكاملاً

معلومات أساسية عن المخططات (المعروفة أيضًا باسم البروتوكولات)

معرّف الموارد المنتظم (URI) هو تسلسل مضغوط من الأحرف يحدّد موردًا مجردًا أو ماديًا. يبدأ كل معرّف موارد منتظم (URI) باسم مخطط يشير إلى مواصفات لتحديد المعرّفات ضمن هذا المخطط. وبالتالي، فإنّ بنية معرّف الموارد المنتظم هي نظام تسمية موحّد وقابل للتوسيع، حيث يمكن أن يقيّد مواصفات كل مخطط بنية ودلالات المعرّفات التي تستخدم هذا المخطط. تُعرف المخططات أيضًا باسم البروتوكولات. يمكنك الاطّلاع أدناه على بعض الأمثلة على المخططات.

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

يشير مصطلح محدّد موقع الموارد الموحّد (URL) إلى المجموعة الفرعية من معرّفات الموارد الموحّدة التي توفّر، بالإضافة إلى تحديد المورد، وسيلة لتحديد موقعه من خلال وصف آلية الوصول الأساسية إليه (مثل موقعه على الشبكة).

معلومات أساسية عن طريقة registerProtocolHandler()

تتيح طريقة secure-content-only NavigatorregisterProtocolHandler() للمواقع الإلكترونية تسجيل قدرتها على فتح أو التعامل مع مخططات عناوين URL معيّنة. لذلك، يجب أن تطلب المواقع الإلكترونية تنفيذ الطريقة على النحو التالي: navigator.registerProtocolHandler(scheme, url). يتم تعريف المَعلمتَين على النحو التالي:

  • scheme: سلسلة تحتوي على البروتوكول الذي يريد الموقع الإلكتروني التعامل معه.
  • url: سلسلة تحتوي على عنوان URL الخاص بالمعالج. يجب أن يتضمّن عنوان URL هذا %s كعنصر نائب سيتم استبداله بعنوان URL الذي تمت معالجته.

يجب أن يكون المخطط أحد المخططات المدرَجة في القائمة الآمنة (على سبيل المثال، 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. سيؤدي ذلك إلى انتقال المتصفّح إلى عنوان URL التالي: https://coffeeshop.example.com/coffee?type=web%2Bcoffee%3A%2F%2Flatte-macchiato. يتم فك ترميز سلسلة البحث في عنوان URL ثم قراءتها على النحو التالي: ?type=web+coffee://latte-macchiato.

لمحة عن معالجة البروتوكولات

تتعلّق آلية تسجيل معالج بروتوكول عنوان URL لتطبيقات الويب التقدّمية الحالية بتوفير تسجيل معالج البروتوكول كجزء من عملية تثبيت تطبيق ويب تقدّمي من خلال ملف البيان الخاص به. بعد تسجيل تطبيق ويب تقدّمي (PWA) كمعالج بروتوكول، عندما ينقر المستخدم على رابط تشعّبي يتضمّن مخططًا معيّنًا، مثل mailto أو bitcoin أو web+music، من متصفّح أو تطبيق خاص بمنصة معيّنة، سيتم فتح تطبيق الويب التقدّمي المسجّل وسيستلم عنوان URL. من المهم ملاحظة أنّ كلاً من التسجيل المقترح المستند إلى ملف البيان وregisterProtocolHandler() التقليدي يؤديان أدوارًا متشابهة جدًا في الممارسة، مع السماح في الوقت نفسه بإمكانية توفير تجارب مستخدم تكميلية:

  • وتشمل أوجه التشابه المتطلبات المتعلقة بقائمة المخططات المسموح بتسجيلها، واسم المَعلمات وتنسيقها، وما إلى ذلك.
  • تكون الاختلافات في التسجيل المستند إلى ملف البيان طفيفة، ولكنها قد تكون مفيدة لتحسين تجربة مستخدمي تطبيقات PWA. على سبيل المثال، قد لا يتطلّب تسجيل PWA المستند إلى ملف البيان اتّخاذ المستخدم أي إجراء إضافي بخلاف تثبيت PWA الذي بدأه المستخدم.

حالات الاستخدام

  • في تطبيق ويب تقدّمي لمعالجة النصوص، يصادف المستخدم في أحد المستندات رابطًا إلى عرض تقديمي، مثل web+presentations://deck2378465. عندما ينقر المستخدم على الرابط، يتم فتح تطبيق الويب التقديمي التقدّمي تلقائيًا في النطاق الصحيح وعرض مجموعة الشرائح.
  • في تطبيق محادثة خاص بمنصة معيّنة، يتلقّى المستخدم في رسالة محادثة رابطًا إلى عنوان URL magnet. عند النقر على الرابط، يتم تشغيل تطبيق ويب تقدّمي (PWA) مثبَّت لتورنت ويبدأ التنزيل.
  • ثبَّت المستخدم تطبيق PWA لبث الموسيقى. عندما يشارك صديق رابطًا لأغنية مثل 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 لتطبيقات الويب التقدّمية (PWA) وتحديدها من قِبل فابيو روشا و دييغو غونزاليس و كونور مودي و صامويل تانغ من فريق Microsoft Edge. راجع هذه المقالة جو ميدلي و"فابيو روشا". الصورة الرئيسية من JJ Ying على Unsplash.