توفّر تطبيقات الويب المعزولة (IWA) بيئة وقت تشغيل آمنة وموثوقة ومنفصلة عن الإصدارات، وذلك استنادًا إلى منصة الويب. في بيئات الإنتاج، خاصةً داخل المؤسسات المُدارة، يحتاج المشرفون والمطوّرون إلى تحكّم دقيق في عمليات نشر البرامج.
ولاستيفاء هذه المتطلبات، يوفّر Chrome إمكانات شاملة لإدارة الإصدارات لتطبيقات الويب المثبَّتة، بما في ذلك قنوات التحديث وتثبيت الإصدار والرجوع إلى إصدار أقدم. تتيح هذه الميزات إمكانية توقّع عمليات النشر، بالإضافة إلى عناصر تحكّم في الاسترداد السريع على مستوى قاعدة المستخدمين.
مدى التوفّر
يعتمد سلوك إدارة الإصدارات على ما إذا كان تطبيق الويب المثبَّت (IWA) مُدارًا من قِبل مشرف أو مثبَّتًا مباشرةً من قِبل مستخدم:
- تطبيقات الويب المثبَّتة المُدارة: تتوفّر ميزات إدارية (بما في ذلك التثبيت المستند إلى السياسة وعمليات الرجوع إلى إصدار أقدم) بدءًا من Chrome 133.
- تطبيقات الويب المثبَّتة غير المُدارة (التي يثبّتها المستخدم): تتوفّر الميزات المخصّصة للمستخدمين (مثل اختيار القناة يدويًا) من الإصدار 150 من Chrome.
توافق نوع الجلسة
تتوافق جميع وظائف إدارة الإصدارات، بما في ذلك قنوات التحديث وتثبيت الإصدار، بشكل كامل مع جميع أنواع جلسات ChromeOS. يشمل ذلك ما يلي:
- جلسات المستخدمين المُدارة العادية
- جلسات الضيوف المُدارة (MGS)
- بيئات وضع Kiosk المخصّصة
تعديل القنوات
باستخدام قنوات التحديث، يمكن للمطوّرين تقسيم إصدارات التطبيق المحدّدة إلى شرائح من أجل نشرها واختبارها لدى فئات مختلفة من الجمهور. لإعداد القنوات، أضِف حقل مصفوفة قنوات اختياريًا إلى كل إدخال إصدار ضمن بيان تحديث التطبيق. لا تقتصر أسماء القنوات هذه على كلمات رئيسية ثابتة على المنصة (مثل canary أو stable)، بل هي معرّفات عشوائية يحدّدها المطوّرون ويجب تنسيقها كسلاسل أبجدية رقمية صغيرة الحجم بتنسيق ASCII (يمكن أن تتضمّن شرطات أو شرطات سفلية ولكن بدون مسافات).
إذا لم يتضمّن إدخال الإصدار حقل القنوات بالكامل، سيضبط Chrome تلقائيًا إمكانية توفّره على القناة "التلقائية". في النهاية، يجب أن يتطابق اسم القناة المحدّد في سياسة المشرف تمامًا مع السلسلة المحدّدة في ملف البيان، لأنّ أي أخطاء مطبعية أو إعدادات غير متطابقة ستؤدي إلى عدم التعرّف على أي إصدار مؤهّل، ما يؤدي إلى إيقاف التحديثات بشكل فعّال لهؤلاء العملاء.
إعدادات ملف البيان
لضبط القنوات، أضِف مصفوفة channels اختيارية إلى كل إدخال إصدار في Web App Manifest.
في ما يلي بعض الاعتبارات التي يجب أخذها في الحسبان:
- ربط القنوات: إذا كان إدخال الإصدار يحدّد مصفوفة
channels، يكون هذا الإصدار مؤهلاً للتثبيت على القنوات المحدّدة فقط. - الخيار الاحتياطي التلقائي: إذا لم يتضمّن إدخال الإصدار الحقل
channelsبالكامل، يفترض Chrome أنّ الإصدار ينتمي حصريًا إلى القناةdefault. - مطابقة السلسلة النصية تمامًا: يجب أن تتطابق أسماء القنوات المحدّدة في إعدادات السياسة من جهة العميل تمامًا مع السلاسل النصية المحدّدة في بيان التعديل (مع مراعاة حالة الأحرف). إذا لم يتطابق أي إصدار مع اسم القناة المستهدَفة، سيتعذّر على التطبيق العثور على تحديثات مؤهَّلة.
مثال على بيان التحديث
يعرض المثال التالي بيان تحديث يتوافق مع قنوات إصدار متعددة:
{
"versions": [
{
"version": "0.1.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.1.0/iwa-sink.swbn",
"channels": ["delta"]
},
{
"version": "0.2.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.2.0/iwa-sink.swbn",
"channels": ["delta", "default"]
},
{
"version": "0.3.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.3.0/iwa-sink.swbn",
"channels": ["beta", "delta"]
},
{
"version": "0.4.0",
"src": "https://github.com/chromeos/iwa-sink/releases/download/v0.4.0/iwa-sink.swbn"
}
]
}
استنادًا إلى بيان التطبيق هذا، تتوفّر الإصدارات التالية لكل قناة مستهدَفة:
- الإعداد التلقائي:
0.2.0،0.4.0(الذي لا يتضمّن قناة صريحة ويتم ضبطه تلقائيًا على الإعداد التلقائي) - delta:
0.1.0و0.2.0و0.3.0 - الإصدار التجريبي:
0.3.0
يتيح محرّك تحديث تطبيقات الويب المعزولة (IWA) استهداف قنوات إصدار محدّدة من خلال البحث عن حقل قنوات داخل بيان التحديث الخاص بالتطبيق.
تثبيت إصدارات معيّنة
في بيئات المؤسسات التي تتطلّب الالتزام بمعايير عالية أو التي تتسم بالثبات العالي، على المشرفين التأكّد من أنّ الأجهزة تشغّل إصدارات دقيقة من البرامج المهمة للنشاط التجاري. يتيح تجميد الإصدار للمشرفين قصر تطبيق الويب المعزول على إصدار محدّد، ما يؤدي إلى إيقاف جميع التحديثات اللاحقة في الخلفية. ويوفّر ذلك للمؤسسات طريقة موثوقة للغاية للحفاظ على إعدادات ثابتة والامتثال للوائح الداخلية أو لوائح المجال الصارمة.
لتجميد تطبيق ويب معزول (IWA) في إصدار معيّن، يمكن لمشرفي المؤسسة ضبط السمة pinned_version ضمن السياسة IsolatedWebAppInstallForceList. تتم إدارة هذه الإمكانية بشكل أساسي من خلال عناصر التحكّم التفاعلية في واجهة المستخدم
في وحدة تحكّم المشرف في Google ضمن لوحة تفاصيل التطبيق باتّباع سير عمل تثبيت التطبيقات على الويب العادي،
مع العلم أنّ المشرفين يحتفظون أيضًا بمرونة نشر قيم هذه السياسات
مباشرةً باستخدام إعدادات JSON الأولية. بعد أن يستهدف المشرف سلسلة إصدار صالحة بنجاح، يجلب Chrome الحزمة المحدّدة ويحظر جميع التحديثات التلقائية اللاحقة.
السلوكيات والقيود الخاصة
- استئناف التحديثات (إزالة التثبيت): لاستعادة التحديثات التلقائية، عليك إزالة السمة
pinned_versionأو تغيير قيمتها إلى إصدار أحدث. - عدم الرجوع إلى إصدار سابق تلقائيًا: إذا تم ضبط
pinned_versionعلى إصدار أقدم من الإصدار المثبَّت حاليًا، لن يؤدي ذلك إلى الرجوع إلى إصدار سابق ما لم يتم تفعيلallow_downgradesبشكل صريح. - الإصدارات غير المتوفّرة: إذا كان الإصدار
pinned_versionالذي تم ضبطه غير متوفّر في قناة التحديث المحدّدة، أو كان أقدم من الإصدار المثبَّت (مع إيقاف إمكانية الرجوع إلى إصدار أقدم)، سيحتفظ Chrome بالإصدار المثبَّت حاليًا وسيمنع أي تحديثات أخرى. - عمليات النشر الجديدة: إذا لم يكن تطبيق الويب المعزول مثبَّتًا بعد على جهاز مُدار، ولم يكن من الممكن استرداد pinned_version المحدَّد أو كان غير متوفّر في بيان التحديث، سيتعذّر تثبيت تطبيق الويب المعزول.
الرجوع إلى الإصدار السابق
إذا تسبّب تحديث تم طرحه حديثًا في حدوث خطأ أو ثغرة أمنية خطيرة، قد يحتاج المشرفون إلى إعادة الأجهزة إلى حالة مستقرة سابقة. يتيح Chrome الرجوع إلى إصدار أقدم من تطبيقات الويب المثبّتة والمُدارة، وهي إمكانية لم تكن متاحة سابقًا على النظام الأساسي عندما كانت التحديثات إلى إصدارات أحدث فقط مسموحًا بها.
لا يمكن الرجوع إلى إصدار أقدم إلا إذا تم استيفاء كلتا شرطَي السياسة التاليَين:
- تم ضبط
pinned_versionعلى إصدار قديم صالح. - تم ضبط
allow_downgradesبشكل صريح على "صحيح".
طريقة عمل الرجوع إلى إصدار سابق
- آلية التشغيل: تتم معالجة عمليات التراجع أثناء دورة التحقّق المنتظمة من التحديثات (التي يتم تنفيذها كل 4 إلى 6 ساعات).
- آلية العمل: يعيد Chrome تثبيت تطبيق الويب المعزول بالكامل باستخدام حزمة الويب القديمة (.swbn) المحدّدة في بيان التحديث.
منطق انتقال القناة
عند تبديل القناة المستهدَفة لتطبيق ما بسياسة، يلتزم محرّك التحديث بسلوكيات معيّنة:
السيناريو (أ): التبديل إلى قناة تتضمّن إصدارات سابقة
- في حال السماح بالرجوع إلى إصدار أقدم: إذا كان pinned_version يتطابق مع إصدار أقدم على القناة المستهدَفة وكانت قيمة
allow_downgradesهي "صحيح"، سيتم الرجوع إلى الإصدار الأقدم (وسيتم محو بيانات المستخدم المحلية). - في حال عدم السماح بالرجوع إلى إصدار أقدم: لن يتم الرجوع إلى إصدار أقدم. سيظل الجهاز يعمل بالإصدار الأحدث المثبّت حاليًا، ولن يتم تحديثه إلا عند توفّر إصدار أحدث على القناة المحدّدة حديثًا.
السيناريو (ب): التبديل إلى قناة تتضمّن نسخة مطابقة
- بدون تغييرات: إذا كانت القناة المحدّدة حديثًا تشير إلى رقم إصدار يساوي الإصدار المثبَّت حاليًا، لن يجري Chrome أي تعديل على الحزمة المثبَّتة.
- مبدأ تطابق البايتات: على المطوّرين ضمان أنّ أرقام الإصدارات المتطابقة في قنوات مختلفة تتضمّن توقيعات رموز متطابقة ومتوافقة مع البايتات. قد يؤدي نشر قواعد رموز برمجية مختلفة ضمن سلسلة الإصدار نفسها على جميع القنوات إلى حالات غير متوقّعة وغير منتظمة للتطبيق.
ضبط السياسات الإدارية
يتم فرض عناصر التحكّم في إصدارات المؤسسات باستخدام منصة "وحدة تحكّم المشرف في Google" المركزية من خلال مخطط السياسة IsolatedWebAppInstallForceList. يمكن إدارة هذه الإعدادات مباشرةً من خلال عناصر التحكّم في واجهة المستخدم في "وحدة تحكّم المشرف"، أو يمكن نشرها باستخدام إعدادات سياسات JSON الأولية.
يوضّح مثال إعداد سياسة المشرف التالي قنوات التحديث وتثبيت الإصدارات والرجوع إلى إصدارات سابقة:
تمثيل قيمة السياسة
[
{
"update_manifest_url": "https://awesome-kitchen-sink.glitch.me/update.json",
"web_bundle_id": "aiv4bxauvcu3zvbu6r5yynoh4atkzqqaoeof5mwz54b4zfywcrjuoaacai",
"channel": "beta",
"pinned_version": "0.7.0",
"allow_downgrades": true
}
]
تفسيرات مَعلمات المخطّط
channel(string, optional): يطلب من Chrome تقييم الإصدارات المخصّصة لهذه القناة فقط في بيان التحديث. في حال عدم تحديدها، يقيّم Chrome القناة "التلقائية".-
pinned_version(سلسلة، اختياري): يؤدي إلى قفل الجهاز بشكل صريح على سلسلة الإصدار المحدّدة. سيتم حظر التحديثات التلقائية اللاحقة التي تتم في الخلفية. allow_downgrades(قيمة منطقية، اختيارية): تتيح إمكانية التراجع. إذا كانت القيمة صحيحة وتم إقرانها بـpinned_versionصالح وأقدم، سيؤدي ذلك إلى إعادة تثبيت إصدار أقدم من Chrome. تحذير: سيؤدي ضبط هذه المَعلمة على "صحيح" إلى حظر جميع التحديثات العادية المستقبلية حتى إذا تم حذف الحقلpinned_version.
تطبيقات الويب المعزولة (IWA) غير المُدارة (التي يثبّتها المستخدم) (من 150)
بالنسبة إلى "تطبيقات الويب المعزولة" غير المُدارة التي يثبّتها المستخدم، يتم التعامل مع إصدارات التطبيق من خلال تفاعلات المستخدم اليدوية:
حِزمة التثبيت ──► يختار المستخدم القناة ──► عمليات التحقّق التلقائية من القناة المحدّدة
المتطلبات الأساسية لبيان التطبيق من أجل التحديثات التلقائية
لكي تبحث تطبيقات الويب المثبَّتة عن تحديثات دورية تلقائية وتتلقّاها في الخلفية، يجب أن يحتوي بيان تطبيق الويب المحلي (البيانات الوصفية المضمّنة في الحزمة في /.well-known/manifest.webmanifest) على حقل update_manifest_url صالح.
في حال حذف عنوان URL هذا من ملف البيان المحلي للتطبيق، لن يُجري محرّك التحديث غير المُدار عمليات تحقّق في الخلفية، وسيظل التطبيق متوقفًا نهائيًا على إصدار التثبيت الأولي.
اختيار القناة يدويًا
أثناء عملية التثبيت الأولية لتطبيق ويب معزول (IWA) غير مُدار، يتحقّق المتصفّح من بيان التحديث ويعرض خيارات القنوات المتاحة (مثل "الإصدار الثابت" و"الإصدار التجريبي") مباشرةً للمستخدم إذا كان المطوّر قد أعدّ قنوات متعدّدة.
قواعد مراحل النشاط الرئيسية
- مصدر التثبيت الأوّلي: بغض النظر عن القناة التي يختارها المستخدم عند التثبيت، يتم دائمًا نشر الملفات المجمَّعة داخل حِزمة التثبيت المقدَّمة عند التثبيت الأوّلي.
- التحديثات اللاحقة: بعد التثبيت، يتم طلب التحديثات المستقبلية من القناة المحدّدة فقط. لن يتم تحديث التطبيق إلا عند نشر إصدار أحدث من الإصدار المثبَّت على القناة المستهدَفة.
- التبديل بين القنوات: للتبديل إلى قناة تحديث مختلفة بعد التثبيت، على المستخدم إلغاء تثبيت تطبيق الويب المعزول (IWA) وإعادة تثبيته، واختيار القناة المطلوبة أثناء عملية التثبيت.
كيفية اختبار عمليات النشر المُدارة
للمشرفين الذين يديرون الأجهزة من خلال "وحدة تحكّم المشرف" في Chrome Enterprise أو يضبطون السياسات مباشرةً:
- انتقِل إلى لوحة تفاصيل التطبيق ضمن إعدادات المؤسسة.
- تطبيق خصائص الإعداد لاختبار التثبيت واستهداف القنوات وبما أنّ عناصر التحكّم هذه متوافقة تمامًا مع جلسات المستخدمين العادية وجلسات الضيوف المُدارة (MGS) وتطبيقات Kiosk، يمكنك التحقّق من السلوكيات في جميع بيئات النشر المستهدَفة.
- لفحص عمليات البحث عن التحديثات محليًا، انتقِل إلى
chrome://web-app-internalsعلى جهاز اختبار لإجراء عمليات البحث عن التحديثات يدويًا وتحليل حِزم البيانات الواردة الخاصة ببيان التطبيق.
الخاتمة
تم تصميم بنية الأمان في "تطبيقات الويب المعزولة" لتمكين المطوّرين مع الحفاظ على إمكانية التوقّع والتحكّم بشكل صارم في سلوكيات دورة حياة التطبيق. من خلال الاستفادة من ميزات إدارة الإصدارات في Chrome، يمكن للمطوّرين ومشرفي تكنولوجيا المعلومات إنشاء مسارات نشر قوية تتوافق مع معايير الامتثال الصارمة والأهداف التشغيلية.
عند تصميم استراتيجية تحديث تطبيقك وإدارتها، ضَع المبادئ الأساسية التالية في اعتبارك:
- استخدام قنوات متدرّجة: تتيح لك قنوات التحديث (مثل
betaأوdevأو حلقات الإصدار المخصّصة) جمع بيانات القياس عن بُعد والملاحظات بشكل تدريجي. ويضمن ذلك أن تخضع التحديثات الرئيسية لعملية تحقّق صارمة قبل أن يتم طرحها لعامة المستخدمين على القناة التلقائية. - التثبيت لضمان الاستقرار: في بيئات المؤسسات التي تتّبع بنية عالية التنظيم أو متطلبات امتثال صارمة، يمكنك قفل نقاط النهاية المهمة على pinned_version تم التحقّق منها لضمان حماية العمليات من الأعطال غير المتوقّعة أو حالات تعطيل سير العمل.
- استخدام خيار الرجوع إلى إصدار سابق في حالات الطوارئ فقط: يجب إدراك أنّ الرجوع إلى إصدار سابق هو إجراء تصحيحي قوي للأمان لم يكن ممكنًا في السابق. ومع ذلك، بما أنّ عملية العودة إلى الحالة السابقة تؤدي إلى إعادة تثبيت كاملة ومحو جميع بيانات التخزين المحلية على العميل (IndexedDB وLocalStorage وملفات تعريف الارتباط)، يجب أن تقتصر هذه العملية على معالجة المشاكل الأمنية الحرجة. بالنسبة إلى التعديلات العادية، يكون نشر تحديث بسيط يتضمّن ميزات مستقبلية هو الاستراتيجية المثالية دائمًا.
- فهم علامات السياسة: يجب الانتباه إلى مفاتيح التبديل الإدارية، لأنّ تفعيل
allow_downgradesسيؤدي إلى إيقاف جميع التحديثات المستقبلية حتى إذا لم يتم تحديد إصدار محدّد. - تحديد تكامل البايتات: تأكَّد من أنّ أرقام الإصدارات المتطابقة التي يتم نشرها على قنوات مختلفة تتوافق مع حِزم متطابقة من حيث البايتات لتجنُّب حالات التطبيق غير المنتظمة عند انتقال العملاء بين القنوات.
من خلال دمج هذه الميزات مباشرةً في بيان التحديث ومخطط سياسة المؤسسة، يمكنك ضمان توفير عملية تحديث موثوقة وقابلة للتدقيق وآمنة تحافظ على ضمانات الثقة العالية في منظومة التطبيقات على الويب المعزولة.