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

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

ما هي تطبيقات الويب التقدّمية بصفتها معالجات عناوين URL؟

تخيل أنّك تتحدث مع صديق باستخدام تطبيق مراسلة فورية، مثل تطبيق "الرسائل" على نظام التشغيل macOS، وتتحدثان عن الموسيقى. لنفترض أيضًا أنّ كلاكما قد ثبَّت تطبيق الويب التقدّمي music.example.com على أجهزتكما. إذا أردت مشاركة المقطع الصوتي المفضّل لديك مع صديقك، يمكنك إرسال رابط لصفحة معيّنة في التطبيق مثل https://music.example.com/rick-astley/never-gonna-give-you-up. بما أنّ هذا الرابط طويل جدًا، ربما قرّر مطوّرو music.example.com إضافة رابط قصير إضافي إلى كل أغنية، مثل https://🎵.example.com/r-a/n-g-g-y-u.

تتيح تطبيقات الويب التقدّمية بصفتها معالجات عناوين URL للتطبيقات مثل music.example.com تسجيل نفسها كمعالجات عناوين URL لعناوين URL التي تتطابق مع أنماط مثل https://music.example.com أو https://*.music.example.com أو https://🎵.example.com، وذلك لفتح الروابط من خارج تطبيق الويب التقدّمي، على سبيل المثال، من تطبيق مراسلة فورية أو بريد إلكتروني ، في تطبيق الويب التقدّمي المثبَّت بدلاً من علامة تبويب المتصفّح.

يتألف تطبيق الويب التقدّمي كمعالِج لعناوين URL من إضافةَين:

  1. عنصر "url_handlers" في بيان تطبيق الويب
  2. تنسيق ملف web-app-origin-association للتحقّق من صحة عمليات ربط عناوين URL ضمن النطاق وخارجه

حالات الاستخدام المقترَحة لتطبيقات الويب التقدّمية بصفتها معالجات عناوين URL

تشمل الأمثلة على المواقع الإلكترونية التي قد تستخدم واجهة برمجة التطبيقات هذه ما يلي:

  • مواقع إلكترونية لبث الموسيقى أو الفيديوهات تتيح تتبُّع الروابط أو روابط قوائم التشغيل التي تفتح في تجربة المشغّل في التطبيق
  • يتم فتح المواقع الإلكترونية التي تمّ متابعتها أو الاشتراك فيها في تطبيق "قارئ الأخبار".

كيفية استخدام تطبيقات الويب التقدّمية كمعالجات عناوين URL

التفعيل من خلال about://flags

لتجربة التطبيقات المتوافقة مع الأجهزة الجوّالة على الويب كمعالِجات عناوين URL على الجهاز، بدون رمز مميّز لتجربة المصدر، فعِّل العلامة #enable-desktop-pwas-url-handling في about://flags.

عنصر بيان تطبيق الويب "url_handlers"

لربط تطبيق متوافق مُثبَّت بأنماط عناوين URL، يجب تحديد هذه الأنماط في بيان تطبيق الويب. ويتم ذلك من خلال عضو "url_handlers". يقبل هذا المقياس صفيفًا من الكائنات التي تحتوي على سمة origin، وهي string مطلوبة تشكّل نمطًا لمطابقة المصادر. يُسمح لهذه النماذج باستخدام بادئة حرف بدل (*) لتضمين نطاقات فرعية متعددة (مثل https://*.example.com). يمكن لتطبيق الويب هذا معالجة عناوين URL التي تتطابق مع هذه المصادر. ويُفترض دائمًا أنّ المخطّط هو https://، ولكن يجب ذكره صراحةً.

يوضّح المقتطف من بيان تطبيق الويب أدناه كيفية إعداد مثال تطبيق الموسيقى على الويب من الفقرة التمهيدية. يضمن الإدخال الثاني الذي يتضمّن الحرف البدل ("https://*.music.example.com") أن يتم تفعيل التطبيق أيضًا لـ https://www.music.example.com أو أمثلة أخرى محتملة مثل https://marketing-activity.music.example.com.

{
  "url_handlers": [
    {
      "origin": "https://music.example.com"
    },
    {
      "origin": "https://*.music.example.com"
    },
    {
      "origin": "https://🎵.example.com"
    }
  ]
}

ملف web-app-origin-association

بما أنّ تطبيق الويب التقدّمي مُستضاف على مصدر مختلف (music.example.com) عن بعض عناوين URL التي يحتاج إلى معالجتها (مثل https://🎵.example.com)، على التطبيق إثبات ملكية هذه المصادر الأخرى. ويحدث ذلك في ملف web-app-origin-association مستضاف على مصادر أخرى.

يجب أن يحتوي هذا الملف على ملف JSON صالح. بنية المستوى الأعلى هي عنصر يتضمّن عضوًا باسم "web_apps". هذا العنصر هو مصفوفة من العناصر ويمثّل كل عنصر إدخالًا لتطبيق ويب مختلف. يحتوي كل عنصر على ما يلي:

الحقل الوصف النوع تلقائي
"manifest" (مطلوب) سلسلة عنوان URL لبيان تطبيق الويب لتطبيق الويب المتوافق string لا ينطبق
"details" (اختياري) عنصر يحتوي على صفائف لأنماط عناوين URL المضمّنة والمستبعدة object لا ينطبق

يحتوي كل عنصر "details" على ما يلي:

الحقل الوصف النوع تلقائي
"paths" (اختياري) مصفوفة لسلاسل المسارات المسموح بها string[] []
"exclude_paths" (اختياري) مصفوفة لسلاسل المسارات غير المسموح بها string[] []

في ما يلي مثال على ملف web-app-origin-association لتطبيق الموسيقى المتوافق مع الويب من المثال أعلاه. سيتم استضافته على المصدر 🎵.example.com وإنشاء عملية الربط بتطبيق الويب التقدّمي music.example.com، والذي يتم تحديده من خلال عنوان URL لبيان تطبيق الويب.

{
  "web_apps": [
    {
      "manifest": "https://music.example.com/manifest.json",
      "details": {
        "paths": ["/*"],
        "exclude_paths": ["/internal/*"]
      }
    }
  ]
}

متى يتطابق عنوان URL؟

تتطابق التطبيقات المتوافقة مع الأجهزة الجوّالة (PWA) مع عنوان URL للمعالجة في حال استيفاء الشرطَين التاليَين:

  • يتطابق عنوان URL مع إحدى سلاسل المصدر في "url_handlers".
  • يمكن للمتصفّح التحقّق من خلال ملف web-app-origin-association المعنيّ أنّ كل مصدر يوافق على السماح لهذا التطبيق بمعالجة عنوان URL هذا.

بخصوص اكتشاف ملف web-app-origin-association

لكي يعثر المتصفّح على ملف web-app-origin-association، على المطوّرين وضع ملف web-app-origin-association في ملفவத /.well-known/ في جذر التطبيق. لكي يعمل هذا الإجراء، يجب أن يكون اسم الملف web-app-origin-association بالضبط.

عرض توضيحي

لاختبار تطبيقات الويب التقدّمية كمعالجات عناوين URL، احرص على ضبط علامة المتصفّح على النحو الموضح أعلاه، ثم ثبِّت تطبيق الويب التقدّمي على الرابط التالي: https://mandymsft.github.io/pwa/. من خلال الاطّلاع على بيان تطبيق الويب، يمكنك ملاحظة أنّه يعالج عناوين URL باستخدام أنماط عناوين URL التالية: https://mandymsft.github.io و https://luhuangmsft.github.io. وبما أنّ هذا الأخير على مصدر مختلف (luhuangmsft.github.io) عن تطبيق الويب التقدّمي، يجب أن يثبت تطبيق الويب التقدّمي على mandymsft.github.io الملكية، وذلك من خلال ملف web-app-origin-association المستضاف على https://luhuangmsft.github.io/.well-known/web-app-origin-association.

لاختبار أنّه يعمل بالفعل، أرسِل إليك رسالة اختبارية باستخدام تطبيق مراسلة فورية من اختيارك أو رسالة إلكترونية يتم عرضها في برنامج بريد إلكتروني غير مستند إلى الويب، مثل Mail على نظام التشغيل macOS. يجب أن تحتوي الرسالة الإلكترونية أو الرسالة النصية على أحد الرابطَين https://mandymsft.github.io أو https://luhuangmsft.github.io. من المفترض أن يتم فتح كليهما في تطبيق الويب المتوافق مع الأجهزة الجوّالة المثبَّت.

تطبيق المراسلة الفورية Skype لنظام التشغيل Windows بجانب تطبيق PWA التجريبي المثبَّت، والذي يتم فتحه في وضع مستقل بعد النقر على رابط يتعامل معه في رسالة محادثة Skype.

الأمان والأذونات

صمم فريق Chromium تطبيقات الويب التقدّمية ونفّذها كمعالجات عناوين URL باستخدام المبادئ الأساسية المحدّدة في مقالة التحكّم في الوصول إلى ميزات منصّة الويب الفعّالة، بما في ذلك التحكّم الذي يمارسه المستخدم والشفافية وسهولة الاستخدام.

التحكّم في المستخدم

إذا تم تسجيل أكثر من تطبيق ويب تقدّمي واحد كمعالج لعنوان URL لنمط معيّن من عناوين URL، سيُطلَب من المستخدم اختيار تطبيق الويب التقدّمي الذي يريد معالجة النمط من خلاله، إن توفّر. لا يعالج هذا الاقتراح عمليات التنقّل التي تبدأ في علامة تبويب متصفح، بل يستهدف صراحةً عمليات التنقّل التي تبدأ خارج المتصفح.

الشفافية

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

يمكن للتطبيقات المخصّصة للمنصة استخدام واجهات برمجة التطبيقات لنظام التشغيل لتعداد التطبيقات المثبَّتة على نظام المستخدم. على سبيل المثال، يمكن للتطبيقات على نظام التشغيل Windows استخدام واجهة برمجة التطبيقات FindAppUriHandlersAsync لتعداد معالِجات عناوين URL. إذا سجّلت تطبيقات الويب المتوافقة مع الأجهزة الجوّالة (PWAs) كمعالجات عناوين URL على مستوى نظام التشغيل في Windows، سيكون وجودها مرئيًا للتطبيقات الأخرى.

الاحتفاظ بالأذونات

يمكن أن يعدّل مصدر التطبيقات عمليات الربط بتطبيقات الويب التقدّمية في أي وقت. سيحاول المتصفّح بانتظام إعادة التحقّق من صحة عمليات الربط لتطبيقات الويب المثبَّتة. إذا تعذّر على المتصفّح إعادة التحقّق من صحة تسجيل معالِج عنوان URL لأنّ بيانات الربط تغيّرت أو لم تعُد متاحة، سيزيل المتصفّح تسجيلات المعالج.

ملاحظات

يريد فريق Chromium معرفة تجاربك مع التطبيقات المتوافقة مع الأجهزة الجوّالة التي تعمل على الويب كمعالِجات عناوين URL.

أخبِرنا عن تصميم واجهة برمجة التطبيقات.

هل هناك مشكلة في واجهة برمجة التطبيقات لا تعمل على النحو المتوقّع؟ هل هناك طُرق أو سمات مفقودة تحتاجها لتنفيذ فكرتك؟ هل لديك سؤال أو تعليق حول ملف أمان الحساب؟ يمكنك الإبلاغ عن مشكلة في المواصفات في مستودع GitHub المقابل، أو إضافة ملاحظاتك إلى مشكلة حالية.

الإبلاغ عن مشكلة في التنفيذ

هل عثرت على خطأ في عملية تنفيذ Chromium؟ أم أنّ عملية التنفيذ مختلفة عن المواصفات؟ يمكنك إرسال بلاغ عن خلل على الرابط new.crbug.com. احرص على تضمين أكبر قدر ممكن من التفاصيل، وتعليمات بسيطة لإعادة إنتاج الخلل، وأدخِل UI>Browser>WebAppInstalls في مربّع المكوّنات. يُعدّ تطبيق Glitch مثاليًا لمشاركة عمليات إعادة الإنتاج بسرعة وسهولة.

إظهار الدعم لواجهة برمجة التطبيقات

هل تخطّط لاستخدام تطبيقات الويب التقدّمية كمعالجات عناوين URL؟ يساعد دعمك العلني فريق Chromium في تحديد أولويات الميزات ويُظهر لمورّدي المتصفّحات الأخرى مدى أهمية توفيرها.

أرسِل تغريدة إلى ‎@ChromiumDev باستخدام الهاشتاغ #URLHandlers وأخبِرنا بمكان استخدامك للميزة وطريقة استخدامك لها.

روابط مفيدة

الشكر والتقدير

تم تحديد التطبيقات المصمّمة للعمل على الويب كمعالِجات عناوين URL وتنفيذها من قِبل لو هوانغ وماندي تشين من فريق Microsoft Edge. تمت مراجعة هذه المقالة من قِبل Joe Medley. الصورة الرئيسية تقدّمها Bryson Hammer على Unsplash.