تطبيقات الويب التقدّمية (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

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

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

كيفية استخدام تطبيقات الويب التقدّمية (PWA) كمعالجات لعناوين 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 لبيان تطبيق الويب الخاص بتطبيق الويب التقدّمي (PWA) المرتبط 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 تطبيقات الويب التقدّمية (PWA) ونفّذها كمعالجات لعناوين URL باستخدام المبادئ الأساسية الموضّحة في التحكّم في الوصول إلى ميزات النظام الأساسي الفعّال للويب، بما في ذلك إمكانية التحكّم في المستخدم والشفافية وسهولة الاستخدام.

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

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

الشفافية

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

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

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

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

ملاحظات

يريد فريق Chromium معرفة المزيد عن تجاربك في استخدام تطبيقات الويب التقدّمية (PWA) كمعالِجات لعناوين URL.

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

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

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

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

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

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

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

روابط مفيدة

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

تم تحديد تطبيقات الويب التقدّمية (PWA) كمعالجات عناوين URL وتنفيذها بواسطة Lu Huang وMandy Chen من فريق Microsoft Edge. تمت مراجعة هذه المقالة من قِبل Joe Medley. صورة رئيسية من قناة برايسون هامر على قناة Un التصميم