الموقع الإلكتروني

ما هو تطبيق الويب التقدمي؟ فتحنا ٢٠ ملف manifest وسقط ستة

الكاتب: وقت القراءة: 6 دقيقة 1 مشاهدة

خريطة هذا المقال

اضغط على أي قسم للانتقال إليه مباشرة.

الموقع الإلكتروني7 أقسام
  1. 1ما الذي يطلبه كروم فعلاً

    معايير التثبيت الرسمية.

  2. 2شرطان يُنسيان دائماً

    الشرط الثاني سبب شائع لسؤال «لماذا لا يظهر زر التثبيت عندي وأنا أفتح الصفحة وأغلقها فوراً».

  3. 3عامل الخدمة ليس شرط تثبيت

    هناك عنصر غائب عن تلك القائمة وحاضر في معظم المقالات: عامل الخدمة (service worker).

  4. 4ماذا وجدنا في العشرين ملفاً

    من عشرين ملفاً فريداً، استوفى أربعة عشر الشروط الخمسة كلها.

  5. 6هل تحتاج إليه أساساً

    نحن نبيع تطوير التطبيقات، ومع ذلك نقولها: لمعظم الأنشطة التي تحدثنا إليها، الجواب لا.

تطبيق الويب التقدمي هو موقعك نفسه، مضافاً إليه ملف manifest وبضعة شروط تقنية تسمح للهاتف بتثبيته ومنحه أيقونة. هذا الجزء يكتبه الجميع. ما لم يتحقق منه أحد هو ما إذا كانت تلك الملفات تعمل فعلاً: جمعنا عشرين منها من ١١١ صفحة إيرانية وفتحناها واحداً واحداً، فسقطت ستة أمام شروط التثبيت في كروم، وأحد الستة أعاد الرمز ٤٠٤.

الأخير أطرفها. موقع يحتل المركز الثالث في جوجل لسؤال «ما هو تطبيق الويب التقدمي»، ويشرح للقارئ ما هو، يشير في ترويسة صفحته إلى ملف manifest غير موجود.

ما هو تطبيق الويب التقدمي؟ فتحنا ٢٠ ملف manifest وسقط ستة

ما الذي يطلبه كروم فعلاً

قائمة معايير تثبيت تطبيق الويب التقدمي في web.dev: short_name أو name، وأيقونتا ١٩٢ و٥١٢ بكسل، وstart_url وقيمة display، بلا أي ذكر لعامل الخدمة
معايير التثبيت الرسمية. عامل الخدمة ليس في القائمة. التُقطت من web.dev في ١٦ أغسطس ٢٠٢٦.

صفحة معايير التثبيت في web.dev، وآخر تحديث لها ١٩ سبتمبر ٢٠٢٤، تحمل قائمة قصيرة. يحتاج الملف إلى name أو short_name، وإلى أيقونة بمقاس ١٩٢ بكسل وأخرى بمقاس ٥١٢، وإلى start_url، وإلى قيمة display تساوي fullscreen أو standalone أو minimal-ui أو window-controls-overlay. ويجب ألا يكون prefer_related_applications مضبوطاً على true.

شرطان يُنسيان دائماً

الصفحة نفسها تشترط تقديم الصفحة عبر HTTPS، وأن يكون المستخدم قد تفاعل معها مرة واحدة على الأقل ومكث فيها نحو ثلاثين ثانية. الشرط الثاني سبب شائع لسؤال «لماذا لا يظهر زر التثبيت عندي وأنا أفتح الصفحة وأغلقها فوراً».

عامل الخدمة ليس شرط تثبيت

هناك عنصر غائب عن تلك القائمة وحاضر في معظم المقالات: عامل الخدمة (service worker). الصفحة الرسمية لا تدرجه ضمن شروط التثبيت. الفرق أهم مما يبدو، إذ تكتب الفرق عامل خدمة ثم تتساءل لماذا لا يظهر عرض التثبيت، والخلل يقع عادة على بُعد ثلاثة أسطر داخل ملف الـ manifest.

هذا لا يجعل عامل الخدمة بلا فائدة. وظيفته أن يُبقي الموقع صالحاً للاستعمال بلا اتصال أو على شبكة رديئة. أي أنه ما يجعل التطبيق مفيداً، لا ما يجعله قابلاً للتثبيت، والخلط بين الأمرين هو أشيع سوء فهم في هذا الباب.

ماذا وجدنا في العشرين ملفاً

المنهج بسيط. قرأنا ١١١ صفحة إيرانية تتصدر نتائج جوجل لسبعة استعلامات مختلفة، واستخرجنا عنوان كل وسم <link rel="manifest">، ثم جلبنا كل ملف على حدة واختبرنا قيمه أمام القائمة أعلاه.

من عشرين ملفاً فريداً، استوفى أربعة عشر الشروط الخمسة كلها. أما الستة الباقية: ثلاثة ملفات بلا name وبلا start_url، وملفان ينقصهما start_url فقط، وواحد أجاب بالرمز ٤٠٤. والنقطة التي تبقى بعد الأرقام أن أياً من هذه الأعطال الستة لا يظهر على الموقع. الصفحة تفتح على أكمل وجه، وزر التثبيت وحده لا يظهر أبداً.

وفي المجموعة التي تكتب عن الموضوع تحديداً يصير المشهد محرجاً: من ١٨ صفحة تحتل ترتيباً للسؤال، خمس تقدّم ملف manifest وست تسجل عامل خدمة. أي أن ثلثي الصفحات التي تعلّمك بناء تطبيق ويب تقدمي لم تبنِ واحداً.

الأعطال الأربعة التي تقع فعلاً

  • مسار الملف خاطئ. انتقل الملف أو صار تحت مجلد آخر ولم يُحدَّث الرابط في الترويسة. المتصفح لا يبلغك، بل يمتنع عن عرض التثبيت.
  • غياب start_url. الإضافات الجاهزة تولّد غالباً ملف site.webmanifest يكفي للأيقونة المفضلة ولا يكفي للتثبيت.
  • غياب أيقونة ٥١٢ بكسل. أيقونة ١٩٢ موجودة لأن أندرويد طلبها أصلاً، لكن شاشة البدء تحتاج الأكبر.
  • بقاء display على القيمة browser. قيمة صحيحة تماماً، وهي القيمة الوحيدة التي تضمن ألا يظهر عرض التثبيت.

كلها تظهر خلال دقيقتين: افتح أدوات المطور في كروم، ثم تبويب Application، ثم Manifest. إن تعذر العثور على الملف أو نقص حقل، يُكتب ذلك هناك بلغة مفهومة. هذا أحد الفحوص التقنية النادرة التي يستطيع مدير موقع غير مبرمج إجراءها بنفسه.

هل تحتاج إليه أساساً

نحن نبيع تطوير التطبيقات، ومع ذلك نقولها: لمعظم الأنشطة التي تحدثنا إليها، الجواب لا. يستحق تطبيق الويب التقدمي ثمنه حين يكون المستخدم عائداً. متجر يزوره عميله مرة في الشهر لا يكسب شيئاً من أيقونة على الشاشة، لأن ذلك العميل يعود عبر جوجل على أي حال.

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

وقيد ينبغي معرفته: على iOS يتم التثبيت من سفاري عبر «إضافة إلى الشاشة الرئيسية»، وبعض القدرات، ومنها الإشعارات، تسلك سلوكاً مختلفاً. إذا كانت حجتك كلها هي إرسال الإشعارات، فاختبر ذلك على الأجهزة التي يحملها عملاؤك قبل أن يكتب أحد سطراً واحداً.

أصلح الموقع قبل أن تغلّفه

تطبيق ويب تقدمي فوق موقع بطيء هو موقع بطيء بأيقونة. لا شرط من الشروط أعلاه يمسّ الأداء، فيثبّته المتصفح بلا اعتراض وينتظر المستخدم المدة نفسها. إن كان LCP لديك فوق ثانيتين ونصف، فترتيب العمل هو: مؤشرات الأداء الأساسية أولاً، ثم الـ manifest.

في المشاريع التي رأيناها، الميزانية التي تُنفق على «تحويل الموقع إلى تطبيق» كانت لتشتري أضعاف النتيجة في تحسين سرعة الموقع. القرار الحقيقي نادراً ما يكون أيهما أفضل، بل أيهما أولاً.

ما الفرق بينه وبين تطبيق أندرويد؟

تطبيق أندرويد حزمة تثبيت منفصلة تصل من متجر أو ملف APK، ووصولها إلى العتاد أوسع. أما تطبيق الويب التقدمي فهو موقعك يفتحه المتصفح في نافذة مستقلة: لا حزمة منفصلة ولا عملية نشر.

هل يفيد تحسين محركات البحث؟

ليس مباشرة. ملف الـ manifest ليس إشارة ترتيب. الأثر غير المباشر يأتي من أن أعمال السرعة والاستقرار ترافق مشروع التطبيق عادة، وهذه لها أثر فعلي.

كيف أتأكد أن نسختي تعمل؟

تبويب Application في أدوات كروم للتحقق من الملف، وLighthouse للتقرير الأوسع. وبعدهما اختبر على هاتف حقيقي، فمحاكي سطح المكتب لا يعيد إنتاج سلوك التثبيت بأمانة.

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

المنهج: ١١١ صفحة إيرانية متصدرة عضوياً في جوجل لسبعة استعلامات مرتبطة، قُرئت في ١٦ أغسطس ٢٠٢٦ من خادم في هلسنكي. استُخرج عنوان كل وسم <link rel="manifest"> وجُلب كل ملف على حدة، فنتج عشرون ملفاً فريداً. الصفحات التي تحقن الملف بجافاسكريبت لا تظهر في هذا العدّ، فالرقم عشرون حدّ أدنى لا حدّ أعلى.

المعايير مأخوذة من صفحة معايير قابلية التثبيت في web.dev، وتعريفات الحقول من مرجع الـ manifest في MDN.

حسین پرتو

مهندس تقنية معلومات ومتخصص سيو بخبرة تفوق 12 عامًا، حاصل على شهادات من MOZ وSemrush وAhrefs Academy. مؤسس RGB.ir، حيث تُنشر أحدث معارف الويب بلغة بسيطة وقابلة للتطبيق.

هل تريدون أن نطبّق هذه المعرفة لصالح أعمالكم؟

يقوم فريق RGB بتنفيذ كل ما قرأتموه في هذا المقال بشكل احترافي لموقعكم. ابدأوا باستشارة مجانية.

التعليقات والأسئلة

لديكم سؤال حول هذا المقال؟ اسألوا، سنجيب.

لا توجد تعليقات بعد؛ كونوا الأولين.

اكتبوا تعليقكم

لن يُنشَر بريدكم الإلكتروني. تُعرَض التعليقات بعد المراجعة.