إضافة بيان تطبيق ويب

دعم المتصفح

  • Chrome: 39.
  • ‫Edge: 79
  • Firefox: غير متوافق
  • Safari: 17.

المصدر

بيان تطبيق الويب هو ملف JSON يُعلم المتصفّح بكيفية سلوك تطبيق الويب المتقدّم (PWA) عند تثبيته على كمبيوتر مكتبي أو جهاز جوّال للمستخدم. يتضمّن ملف البيان النموذجي على الأقل ما يلي:

  • اسم التطبيق
  • الرموز التي يجب أن يستخدمها التطبيق
  • عنوان URL الذي يجب فتحه عند تشغيل التطبيق

إنشاء ملف البيان

يمكن أن يكون لملف البيان أي اسم، ولكن يُسمى عادةً manifest.json ويتم عرضه من الجذر (دليل المستوى الأعلى لموقعك الإلكتروني). تقترح المواصفة أن يكون تنسيق الملف .webmanifest، ولكن قد تحتاج إلى استخدام ملفات JSON لجعل بيانات البيان أكثر وضوحًا للقراءة.

يبدو البيان النموذجي على النحو التالي:

{
 
"short_name": "Weather",
 
"name": "Weather: Do I need an umbrella?",
 
"icons": [
   
{
     
"src": "/images/icons-vector.svg",
     
"type": "image/svg+xml",
     
"sizes": "512x512"
   
},
   
{
     
"src": "/images/icons-192.png",
     
"type": "image/png",
     
"sizes": "192x192"
   
},
   
{
     
"src": "/images/icons-512.png",
     
"type": "image/png",
     
"sizes": "512x512"
   
}
 
],
 
"id": "/?source=pwa",
 
"start_url": "/?source=pwa",
 
"background_color": "#3367D6",
 
"display": "standalone",
 
"scope": "/",
 
"theme_color": "#3367D6",
 
"shortcuts": [
   
{
     
"name": "How's the weather today?",
     
"short_name": "Today",
     
"description": "View weather information for today",
     
"url": "/today?source=pwa",
     
"icons": [{ "src": "/images/today.png", "sizes": "192x192" }]
   
},
   
{
     
"name": "How's the weather tomorrow?",
     
"short_name": "Tomorrow",
     
"description": "View weather information for tomorrow",
     
"url": "/tomorrow?source=pwa",
     
"icons": [{ "src": "/images/tomorrow.png", "sizes": "192x192" }]
   
}
 
],
 
"description": "Weather forecast information",
 
"screenshots": [
   
{
     
"src": "/images/screenshot1.png",
     
"type": "image/png",
     
"sizes": "540x720",
     
"form_factor": "narrow"
   
},
   
{
     
"src": "/images/screenshot2.jpg",
     
"type": "image/jpg",
     
"sizes": "720x540",
     
"form_factor": "wide"
   
}
 
]
}

خصائص البيان الرئيسية

short_name وname

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

icons

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

السمة icons هي مصفوفة من عناصر الصور. يجب أن يحتوي كل عنصر على src وسمة sizes وtype للصورة. لاستخدام الرموز القابلة للتمويه، والتي يُشار إليها أحيانًا باسم الرموز التكيُّفية على Android، أضِف "purpose": "any maskable" إلى السمة icon.

بالنسبة إلى متصفّح Chromium، يجب تقديم رمز لا يقلّ عن 192×192 بكسل ورمز 512×512 بكسل. إذا تم توفير هذين الحجمين فقط للرمز، يغيّر Chrome حجم الرموز تلقائيًا ليلائم الجهاز. إذا كنت تفضّل تغيير حجم أيقوناتك وتعديلها لتكون دقيقة على مستوى البكسل، قدِّم الرموز بزيادة قدرها 48dp.

id

تتيح لك السمة id تحديد المعرّف المستخدَم لتطبيقك بشكل صريح. تؤدي إضافة السمة id إلى ملف البيان إلى إزالة الاعتمادية على start_url أو موقع ملف البيان، ومن الممكن تعديلهما في المستقبل. لمزيد من المعلومات، يُرجى الاطّلاع على مقالة تحديد تطبيقات الويب التقدّمية بشكل فريد باستخدام سمة معرّف بيان تطبيق الويب.

start_url

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

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

background_color

يتم استخدام السمة background_color على شاشة البداية عند فتح التطبيق على الجهاز الجوّال للمرة الأولى.

display

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

الموقع السلوك
fullscreen يفتح تطبيق الويب بدون أي واجهة مستخدم للمتصفّح ويشغل كل مساحة العرض المتاحة.
standalone يفتح تطبيق الويب ليبدو ويتصرف مثل تطبيق مستقل. يعمل التطبيق في نافذته الخاصة، منفصلة عن المتصفّح، ويُخفي عناصر واجهة مستخدم المتصفّح العادية، مثل شريط العناوين.
مثال على نافذة تطبيق متوافق مع الأجهزة الجوّالة (PWA) مع شاشة مستقلة
واجهة المستخدِم المستقلة:
minimal-ui يشبه هذا الوضع standalone، ولكنه يقدّم للمستخدم مجموعة أساسية من عناصر واجهة المستخدم للتحكّم في التنقّل، مثل زرَّي الرجوع وإعادة التحميل.
مثال على نافذة تطبيق متوافق مع الأجهزة الجوّالة (PWA) مع عرض واجهة مستخدم بسيطة
واجهة المستخدم ذات التصميم البسيط.
browser تجربة متصفّح عادية

display_override

لاختيار طريقة عرض تطبيق الويب، اضبط وضع display في بيان التطبيق كما هو описан في القسم السابق. ليس مطلوبًا من المتصفّحات أن تكون متوافقة مع جميع أوضاع العرض، ولكن يجب أن تكون متوافقة مع سلسلة الحلول الاحتياطية المحدّدة في المواصفات ("fullscreen""standalone""minimal-ui""browser"). وإذا لم تكن متوافقة مع وضع معيّن، يتم استخدام وضع العرض التالي في السلسلة. في حالات نادرة، يمكن أن تتسبب هذه الحلول الاحتياطية في حدوث مشاكل. على سبيل المثال، لا يمكن لمطوِّر البرامج طلب استخدام "minimal-ui" بدون فرض الرجوع إلى وضع عرض "browser" عند عدم توفّر السمة "minimal-ui". ويؤدي السلوك الحالي أيضًا إلى استحالة تقديم أوضاع عرض جديدة بطريقة متوافقة مع الإصدارات القديمة، لأنّها لا تملك مكانًا في سلسلة الحلول الاحتياطية.

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

في ما يلي مثال على كيفية استخدام display_override. إنّ تفاصيل "window-control-overlay" خارج نطاق هذه الصفحة.

{
 
"display_override": ["window-control-overlay", "minimal-ui"],
 
"display": "standalone",
}

عند تحميل هذا التطبيق، يحاول المتصفّح استخدام "window-control-overlay" أولاً. وإذا لم يكن ذلك متاحًا، يتم الرجوع إلى "minimal-ui"، ثم إلى "standalone" من السمة display. إذا لم يكن أيّ من هذه العناصر متاحًا، يعود المتصفّح إلى سلسلة الحلول الاحتياطية العادية.

scope

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

ملاحظات أخرى حول scope:

  • إذا لم تُدرِج scope في البيان، سيكون الscope التلقائي المُضمَّن هو عنوان URL لصفحة البداية، ولكن بعد إزالة اسم الملف والطلب والجزء.
  • يمكن أن تكون سمة scope مسارًا نسبيًا (../) أو أي مسار على مستوى أعلى (/) يسمح بزيادة تغطية عمليات التنقّل في تطبيق الويب.
  • يجب أن يكون start_url ضمن النطاق.
  • تكون السمة start_url نسبية إلى المسار المحدّد في السمة scope.
  • سيكون start_url الذي يبدأ بـ / دائمًا جذر المصدر.

theme_color

يحدِّد theme_color لون شريط الأدوات، ويمكن أن يظهر في معاينة التطبيق في أدوات تبديل المهام. يجب أن يتطابق theme_color مع لون المظهر meta المحدّد في عنوان المستند.

مثال على نافذة تطبيق متوافق مع الأجهزة الجوّالة (PWA) تتضمّن مظهرًا مخصّصًا للون theme_color
مثال على نافذة تطبيق ويب تقدّمي (PWA) مع سمة theme_color مخصّصة.

theme_color في الاستعلامات عن الوسائط

توافق المتصفّح

  • Chrome: 93
  • الحافة: 93.
  • Firefox: 106
  • Safari: 15-

المصدر

يمكنك ضبط theme_color في الاستعلام عن الوسائط باستخدام السمة media لعنصر لون المظهر meta. على سبيل المثال، يمكنك تحديد لون واحد للوضع الفاتح ولون آخر للوضع الداكن بهذه الطريقة. ومع ذلك، لا يمكنك تحديد هذه التفضيلات في بيانك. لمزيد من المعلومات، يُرجى الاطّلاع على مشكلة GitHub‏ w3c/manifest#975.

<meta name="theme-color" media="(prefers-color-scheme: light)" content="white">
<meta name="theme-color" media="(prefers-color-scheme: dark)"  content="black">

shortcuts

سمة shortcuts هي صفيف من عناصر اختصار التطبيق التي توفّر إمكانية الوصول السريع إلى المهام الرئيسية داخل تطبيقك. وكل عنصر هو قاموس يحتوي على name وurl على الأقل.

description

تصف السمة description الغرض من تطبيقك.

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

screenshots

السمة screenshots هي صفيف من عناصر الصور التي تمثّل تطبيقك في سيناريوهات الاستخدام الشائعة. يجب أن يتضمّن كل عنصر السمة src وسمة sizes وسمة type للصورة. وتكون السمة form_factor اختيارية. يمكنك ضبط القيمة على "wide" للقطات الشاشة المطبّقة على الشاشات العريضة فقط أو "narrow" للقطات الشاشة الضيقة فقط.

في Chrome، يجب أن تستوفي الصورة المعايير التالية:

  • يجب أن يكون العرض والارتفاع 320 بكسل على الأقل و3840 بكسل على الأكثر.
  • لا يمكن أن يكون الحد الأقصى لبُعد الصورة أكبر من 2.3 مرة طول الحد الأدنى للبُعد.
  • يجب أن يكون لجميع لقطات الشاشة التي تتطابق مع شكل الجهاز نسبة العرض إلى الارتفاع نفسها.
    • بدءًا من الإصدار 109 من Chrome، لا يتم عرض سوى لقطات الشاشة التي تم ضبط السمة form_factor فيها على "wide" على أجهزة الكمبيوتر المكتبي.
  • اعتبارًا من الإصدار 109 من Chrome، سيتم تجاهل لقطات الشاشة التي تم ضبط form_factor فيها على "wide" على Android. وسيستمر عرض لقطات الشاشة التي لا تتضمّن form_factor للتوافق مع الأنظمة القديمة.

يعرض Chrome على الكمبيوتر المكتبي لقطة شاشة واحدة على الأقل وثماني لقطات شاشة كحد أقصى تستوفي هذه المعايير. ويتم تجاهل الباقي.

يعرض Chrome على Android لقطة شاشة واحدة على الأقل وخمس لقطات شاشة كحد أقصى تستوفي هذه المعايير. ويتم تجاهل الإعلانات المتبقية.

لقطات شاشة لواجهة مستخدم تثبيت أكثر ثراءً على أجهزة الكمبيوتر المكتبي والأجهزة الجوّالة
تتوفّر واجهة مستخدم أكثر شمولاً لعملية التثبيت على أجهزة الكمبيوتر المكتبي والأجهزة الجوّالة.

بعد إنشاء البيان، أضِف علامة <link> إلى جميع صفحات تطبيقك المتقدّم على الويب. على سبيل المثال:

<link rel="manifest" href="/manifest.json">

اختبار ملف البيان

للتأكّد من إعداد البيان بشكل صحيح، استخدِم لوحة البيان في لوحة التطبيق ضمن "أدوات مطوّري البرامج في Chrome".

لوحة التطبيق في &quot;أدوات مطوري البرامج في Chrome&quot; مع اختيار علامة التبويب &quot;البيان&quot;
يمكنك اختبار البيان في "أدوات مطوري البرامج".

تقدّم هذه اللوحة نسخة قابلة للقراءة من قِبل المستخدمين للعديد من ملف البيان الخاص بك، وتتيح لك التأكّد من تحميل كل الصور بشكل صحيح.

شاشات البداية على الأجهزة الجوّالة

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

ينشئ Chrome تلقائيًا شاشة البداية من name و background_color وicons المحدّدة في البيان. لإنشاء عملية انتقال سلسة من شاشة البداية إلى التطبيق، اجعل background_color باللون نفسه المستخدَم في صفحة التحميل.

يختار Chrome الرمز الذي يتوافق بشكل أكبر مع درجة دقة الجهاز لشاشة التمهيد. يكفي تقديم رموز بحجم 192 بكسل و512 بكسل في معظم الحالات، ولكن يمكنك تقديم رموز إضافية لمطابقة أفضل.

مراجع إضافية

للتعرّف على السمات الأخرى التي يمكنك إضافتها إلى بيان تطبيق الويب، يمكنك الرجوع إلى مستندات بيان تطبيق الويب MDN.