في حين أنّ بعض إمكانات PWA معروفة بشكل شائع، مثل واجهة برمجة التطبيقات Notifications API التي تتيح لتطبيق الويب تلقّي إشعارات النظام الأساسي ونشرها، هناك عدد من الميزات الجديدة والقادمة التي ستتوفر على الويب لتعزيز تطبيقاتك. مشروع إمكانات الويب في Chromium، المعروف أيضًا باسم Project Fugu 🐡، هو جهد يهدف إلى إتاحة معايير ويب جديدة وقوية مع الحفاظ على ما يميّز الويب، وهو الأمان الذي يركّز على المستخدمين، وسهولة الاستخدام، والتوافق مع جميع الأنظمة الأساسية.
سد فجوة التطبيقات
تم تصميم معظم هذه الإمكانات لسدّ الفجوة بين تطبيقات الكمبيوتر أو الأجهزة الجوّالة التقليدية وتطبيقات الويب، مع توفير الإمكانات الرئيسية الأولى التي تتيح لتطبيقات الويب الوصول إلى أدوات اختيار جهات الاتصال وميزات المشاركة في النظام الأساسي، كما تتيح لتطبيقات الويب التقدّمية المثبّتة التسجيل كهدف للمشاركة في النظام الأساسي وعرض شارات الرموز، على سبيل المثال لا الحصر.
تخضع كل إمكانية لعملية توحيد معايير شاملة للحصول على ملاحظات من المنتدى للمساعدة في تصميم واجهة برمجة التطبيقات وضمان أنّ التصميم النهائي آمن وخاص وجدير بالثقة. يتم تتبُّع الإمكانات الجديدة في أداة تتبُّع مفتوحة ويمكن تقسيمها إلى إحدى الفئات الخمس التالية:
-
تم الشحن
-
متاحة للاستخدام في أحدث إصدار ثابت من Chrome يمكن استخدامها بشكل موثوق بشرط أن يتم رصد الميزة بشكل صحيح.
-
في التجربة الأصلية
-
تتوفّر هذه الميزة كـ تجربة أصل (OT) في Chrome، ما يتيح لفريق Chrome التحقّق من صحة الميزات وواجهات برمجة التطبيقات التجريبية في الاستخدام الفعلي، كما يتيح لك تقديم ملاحظات حول سهولة استخدام واجهة برمجة التطبيقات وفعاليتها. تتطلّب التجارب الأصلية موافقة المستخدمين وتسمح لك باختبار هذه الوظيفة معهم في مرحلة الإصدار التجريبي بدون أن يضطروا إلى تفعيل أي علامات خاصة في المتصفّح. قد تتغير واجهات برمجة التطبيقات بعد إجراء اختبار مفتوح، كما أنّ الاختبارات المفتوحة لن تكون متاحة لفترة من الوقت قبل الإطلاق، لذا يجب عدم التعامل معها على أنّها آلية إطلاق مبكر لواجهات برمجة التطبيقات الجديدة.
-
IN DEVELOPER TRIAL
-
تتوفّر هذه الميزة خلف إحدى الميزات التجريبية في Chrome. تتوفّر واجهات برمجة التطبيقات هذه في إصدار تجريبي ولا تزال قيد التطوير. وهي غير جاهزة للاستخدام في مرحلة الإنتاج، ومن المحتمل أن تتضمّن أخطاء وأن يتم تغيير واجهات برمجة التطبيقات. مع أنّ المطوّرين يمكنهم استخدام هذا الوقت لتجربة الميزات التجريبية بأنفسهم، لا يجب أن يطلبوا من المستخدمين تفعيل العلامات لاستخدام ميزاتهم.
-
بدأ
-
بدأنا في تطويرها، ولكن لا تتوفّر حاليًا واجهة برمجة تطبيقات قابلة للاستخدام.
-
قيد الدراسة
-
واجهات برمجة التطبيقات التي أبدى المستخدمون اهتمامًا بها، ولكن لم يبدأ تنفيذها بعد إذا لم يتم بدء استخدام واجهة برمجة تطبيقات بعد، يُرجى وضع نجمة عليها أو إضافة حالات الاستخدام إلى المشكلة للمساعدة في تحديد أولويات فريق Chromium.
تحسين تطبيق الويب التقدّمي
عند إنشاء تطبيق ويب تقدّمي، ننصحك بتنفيذ واجهات برمجة التطبيقات وأفضل الممارسات التالية لتحسين تجربة تطبيق الويب بشكل كبير. وبحسب حالة الاستخدام العامة، قد يستفيد تطبيقك من واجهة برمجة تطبيق واحدة أو أكثر لتحسين تجربة المستخدم بشكل عام. تخضع واجهات برمجة التطبيقات التي تحمل الرمز 🔮 للتجربة الأصلية، وتخضع تلك التي تحمل الرمز 🚩 لتجربة المطوّرين، وتلك التي تحمل الرمز 📱 مستقرة حاليًا على الأجهزة الجوّالة وقد بدأ تنفيذها على أجهزة الكمبيوتر، أما أي واجهة برمجة تطبيقات أخرى مذكورة فهي مستقرة (مع أنّها قد لا تكون متاحة على جميع المنصات). يتم تضمين واجهات برمجة التطبيقات المتوفّرة في الإصدارات الحالية الثابتة أو التجريبية (المميّزة بالرمز β) أو إصدارات Canary (المميّزة بالرمز α) من Chrome فقط، ومن المتوقّع أن يتم تعديل هذه القائمة بانتظام لتعكس واجهات برمجة التطبيقات التي يتم إصدارها.
تثبيت التطبيق
إذا كنت تريد أن يكون تطبيق الويب متاحًا إلى جانب التطبيقات الأخرى المثبَّتة، مثل شريط المهام والمشغّل وسطح المكتب ومبدّل التطبيقات، ننصحك بتنفيذ واجهات برمجة التطبيقات التالية ليكون تطبيق الويب التقدّمي قابلاً للتثبيت. يمكنك اختياريًا اتّباع هذا الدرس التطبيقي حول الترميز.
- بيان تطبيق الويب: يقدّم معلومات عن تطبيق الويب للمتصفّح ونظام التشغيل، مثل الاسم والشعار وعنوان URL الذي يجب بدء التطبيق منه وطريقة عرض تطبيق الويب.
- Service Workers وCache Storage API: تسمح لتطبيق الويب بإنشاء خادم وكيل والتحكّم في طريقة التعامل مع ذاكرة التخزين المؤقت للمتصفّح. يُعدّ توفّر مشغّل خدمات يتفاعل مع حدث fetch في المتصفّح ويمكنه الاستجابة لطلب fetch الخاص بعنوان URL لبدء التشغيل المحدّد في ملف بيان تطبيق الويب مع المحتوى في حال عدم الاتصال بالإنترنت شرطًا أساسيًا لإمكانية التثبيت.
- التشغيل عند تسجيل الدخول 🚩إصدار تجريبي: تتيح لك هذه الميزة ضبط تطبيق الويب التقدّمي (PWA) ليتم تشغيله تلقائيًا عندما يسجّل المستخدم الدخول.
- اختصارات رموز التطبيقات: يمكنك توفير اختصارات لعناوين URL معيّنة باستخدام تطبيق الويب (على سبيل المثال، بدء محادثة أو تحميل صورة وما إلى ذلك) من قائمة السياق الخاصة برمز التطبيق المثبَّت (أي الضغط مع الاستمرار على الأجهزة الجوّالة أو النقر بزر الماوس الأيمن على أجهزة الكمبيوتر)، وذلك على المنصات المتوافقة.
- getInstalledRelatedApps: تسمح لتطبيق الويب بالتحقّق مما إذا كان تطبيق الويب التقدّمي أو تطبيق Android أو تطبيق Windows (UWP) قد تم تثبيته من قبل.
تكيُّف وتوافق
إذا كنت تريد أن يكون تطبيق الويب قابلاً للاستخدام من قِبل مستخدمين لديهم أجهزة مختلفة واحتياجات جسدية و/أو عقلية مختلفة، عليك مراعاة تنفيذ ما يلي:
- التصميم المتجاوب: تأكَّد من أنّ تطبيق الويب يوفّر تجربة قابلة للاستخدام، أو على الأقل غير معطّلة، لأحجام الشاشات الصغيرة والكبيرة، وذلك للسماح للمستخدمين على الأجهزة المختلفة وفي مواضع النوافذ المختلفة باستخدام تطبيقك.
- إرشادات WCAG 2.0: تأكَّد من أنّ تطبيق الويب يمكن استخدامه من قِبل الأشخاص الذين لديهم مجموعة من القدرات الجسدية والعقلية، وليس فقط الأشخاص العاديين والأصحاء. يمكنك أيضًا الاطّلاع على إرشادات حول تصميم المحتوى بما يتوافق مع احتياجات ذوي الاحتياجات الخاصة الصادرة عن حكومة المملكة المتحدة.
تحقيق الربح والتوزيع
- Web Payments: واجهة مرنة وعادية للدفع على الإنترنت، وهي مصمَّمة للعمل على أي متصفّح أو جهاز ومع أي مقدّم خدمة دفع أو خدمة دفع.
- واجهة برمجة التطبيقات للسلع الرقمية 🔮: واجهة عادية ومرنة للاستعلام عن عمليات الشراء داخل التطبيق وإدارتها من تطبيقات الويب، بما في ذلك إتاحة أنواع عمليات الشراء الشائعة، مثل عمليات الشراء لمرة واحدة وعمليات الشراء المتكرّرة (مثل الجواهر أو العملات داخل الألعاب) والاشتراكات. تعمل هذه الميزة بالتزامن مع Web Payments.
- أنشطة الويب الموثوقة: يمكنك إنشاء تطبيق Android لتطبيق الويب التقدّمي (PWA) كي يتم إدراجه للتنزيل في المتاجر المتوافقة، مثل Google Play.
الوصول إلى الحافظة
- الحافظة غير المتزامنة: قراءة النصوص والصور وكتابتها في حافظة المستخدم، والاستماع إلى أحداث النسخ واللصق من المستخدم
الإشعارات
إذا كان تطبيق الويب يحتاج إلى إرسال إشعارات إلى المستخدمين، مثل تطبيق دردشة أو ترميز في الخلفية قيد التنفيذ، يمكنك الاستفادة من واجهات برمجة التطبيقات التالية:
- الإشعارات الفورية على الويب: بعد موافقة المستخدم، تسمح لتطبيق الويب بإرسال إشعارات فورية إليه.
- واجهة Badging API: تتيح لتطبيق الويب المثبَّت ضبط شارة على مستوى التطبيق على رمز التطبيق، مع إمكانية إضافة رقم.
- مشغّلات الإشعارات 🔮: إرسال إشعارات إلى المستخدمين عند استيفاء شرط مشغّل، مثل شرط مستند إلى الوقت أو الموقع الجغرافي (مثل إشعارات أحداث التقويم)
مشاركة الأهداف ومعالجة البروتوكولات
- تسجيل بروتوكول عنوان URL 🚩إصدار أولي: يتيح لتطبيقات الويب تسجيل نفسها كمعالجات لبروتوكولات/مخططات عناوين URL المخصّصة باستخدام بيان التثبيت.
- Web Share: يمكنك استخدام واجهة مستخدم نظام المشاركة المضمّنة على الأجهزة المتوافقة لمشاركة عناوين URL والنصوص والملفات مع التطبيقات الأخرى المثبَّتة على الجهاز. لا يلزم تثبيت تطبيقك.
- Web Share Target: إتاحة تطبيق الويب التقدّمي المثبَّت في واجهة مستخدم نظام المشاركة المضمّنة على الأجهزة المتوافقة للسماح للمستخدمين بمشاركة النصوص والملفات مع تطبيقك من تطبيقات أخرى
فتح الملفات وحفظها
- واجهة برمجة التطبيقات لمعالجة الملفات 🚩: يمكنك تسجيل تطبيق الويب المثبَّت في نظام التشغيل للإشارة إلى إمكانية معالجة الملفات (قراءتها أو بثّها أو تعديلها) بأنواع MIME و/أو امتدادات الملفات المحدّدة، ما يتيح، على سبيل المثال، إدراجها كخيار في قائمة "فتح باستخدام تطبيق..." ضمن قائمة السياق.
- File System Access API: تتيح هذه الواجهة الوصول إلى نظام ملفات المستخدم بشكل قوي لكل جلسة، ما يسمح بالتفاعلات التالية (حسب ما يتطلبه تطبيقك)
- قراءة الملفات من نظام الملفات المحلي: يعرض أداة اختيار الملفات ويسمح للمستخدم باختيار ملف واحد أو عدة ملفات لفتحها، بما في ذلك حصر أنواع الملفات المسموح بها حسب نوع MIME والامتداد.
- حفظ التغييرات في الملف المفتوح: حفظ التغييرات في ملف تم فتحه باستخدام "نظام الملفات في ChromeOS" مباشرةً، بدون مطالبة المستخدم باختيار مكان حفظ الملف أو تنزيل نسخة منه
- إنشاء ملف جديد على نظام الملفات المحلي: السماح للمستخدم بإنشاء ملف جديد، مع إمكانية استخدام امتداد الملف التلقائي، على نظام الملفات المحلي، والذي يمكن لتطبيقك بعد ذلك الوصول إليه لحفظ البيانات.
- الملفات التي تم فتحها مؤخرًا: يمكن تخزين معالجات الملفات التي تم إنشاؤها باستخدام FSA في IndexedDB، ما يتيح لك عرض قائمة بالملفات المستخدَمة مؤخرًا بين جلسات المستخدمين (مع أنّ أذونات التعديل لا تظل متاحة بين الجلسات).
- قراءة دليل وكتابته وتعديله: السماح للمستخدم باختيار دليل في نظام الملفات المحلي يمكن لتطبيقك بعد ذلك قراءة محتواه وإنشاء الملفات والأدلة الفرعية وقراءتها وحذفها وتحديد مسار الملف النسبي بداخله.
- Compression Streams: لضغط البيانات أو فك ضغطها باستخدام خوارزميتَي الضغط gzip وdeflate
إدارة النوافذ
- Fullscreen API: تتيح للمستخدم عرض عنصر في تطبيق الويب، مثل فيديو، بملء الشاشة
- واجهة برمجة التطبيقات لوضع النوافذ على الشاشات المتعددة 🔮: تتيح لتطبيق الويب الحصول على معلومات حول الشاشات المتصلة ووضع النوافذ بالنسبة إلى تلك الشاشات، ما يتيح استخدام تطبيقات الويب التي تتضمّن نوافذ وشاشات متعددة.
- وضع عرض التطبيق في علامات تبويب 🚩: يتيح عرض تطبيق الويب المثبَّت في علامة تبويب واحدة أو أكثر، وليس في نافذة واحدة فقط.
تكامل أعمق مع نظام التشغيل
- Local Fonts API 🔮: تتيح لتطبيق الويب إدراج الخطوط المثبَّتة محليًا وطلب الوصول إلى حاوية SFNT منخفضة المستوى (موجّهة بالبايت) تتضمّن بيانات الخط الكاملة، ما يسمح لتطبيقك بعرض الخطوط المثبَّتة محليًا بشكل مخصّص.
- Wake Lock: تتيح لتطبيق الويب منع الشاشة من الانتقال إلى وضع السكون، ما يسمح لتطبيق الويب بتنفيذ مهام تستغرق وقتًا طويلاً بدون الخوف من الانقطاع (مثل تحويل ترميز الملفات أو إبقاء وصفة الطعام معروضة أثناء الطهي).
- رصد عدم النشاط 🔮: يتيح لتطبيقك المستنِد إلى الويب رصد الوقت الذي لا يستخدم فيه المستخدم جهازه بشكل نشط.
توسيع نطاق ميزة العمل بلا إنترنت
إذا كنت تريد أن يعمل تطبيق الويب بشكل أفضل حتى بدون اتصال بالإنترنت، يمكنك تنفيذ واجهات برمجة التطبيقات التالية:
- المزامنة في الخلفية: عند عدم الاتصال بالإنترنت، يمكنك وضع الطلبات التي تحتاج إلى اتصال في قائمة الانتظار ثم مزامنة بيانات تطبيق الويب في الخلفية عندما تكون الشبكة متاحة، بدلاً من عدم معالجة الطلبات بلا إنترنت على الإطلاق. على سبيل المثال، السماح بإرسال الرسائل أو مزامنة التغييرات التزايدية في مستند عند إعادة الاتصال بالإنترنت
- المزامنة الدورية في الخلفية: يمكنك السماح لتطبيق الويب المثبَّت والمستخدَم بشكل متكرّر بتنشيط عامل الخدمة بشكل دوري، استنادًا إلى الحد الأدنى من الوقت المنقضي، وتشغيله، مثلاً لتعديل ذاكرة التخزين المؤقت، ما يتيح عرض المحتوى بأحدث إصدار عند فتح المستخدم للتطبيق.
- واجهة برمجة التطبيقات لفهرسة المحتوى: تتيح لتطبيق الويب إخبار المتصفّح بالمحتوى المتوفّر بلا إنترنت لكي يتمكّن المتصفّح من عرضه للمستخدمين.
- الجلب في الخلفية: يتيح عمليات الجلب الطويلة الأمد في الخلفية، مثل تنزيل الأفلام أو تحميل الفيديوهات والصور، بدون المخاطرة بإيقاف عامل الخدمة.
بث الوسائط وتشفيرها وفك تشفيرها
إذا كان تطبيق الويب يشغّل ملفات وسائط، مثل ملفات الفيديو أو الصوت، ننصحك بتنفيذ واجهات برمجة التطبيقات التالية:
- البث التكيّفي: السماح لعمليات بث الفيديو بالتبديل بين معدّلات نقل البيانات استنادًا إلى أداء الشبكة
- نافذة ضمن النافذة: تتيح للمستخدم إخراج الفيديو من تطبيق الويب إلى نافذة تظهر دائمًا في المقدّمة، ويمكن بعد ذلك نقلها وتغيير حجمها بشكل مستقل.
- واجهة برمجة التطبيقات لجلسات الوسائط: تتيح للمستخدم التحكّم في تشغيل الوسائط في تطبيق الويب باستخدام وظائف الأجهزة والبرامج على مستوى نظام التشغيل (مثل أزرار التشغيل/الإيقاف المؤقت/الإيقاف في لوحات المفاتيح أو على شاشات القفل)، بالإضافة إلى التحكّم في إشعارات الوسائط على مستوى نظام التشغيل (مثل العنوان والفنان والألبوم والأعمال الفنية)
- Chromecast API: تسمح هذه الواجهة للمستخدم ببث الوسائط إلى جهاز استقبال Chromecast متاح، مثلاً لتشغيل فيديو من تطبيق الويب على التلفزيون.
- Web Codecs 🔮: تتيح هذه الواجهة الوصول إلى برامج ترميز وفك ترميز الوسائط المضمّنة في الأجهزة والبرامج، وهي مفيدة في حالات الاستخدام في الوقت الفعلي، مثل البث المباشر بزمن استجابة منخفض والترميز وفك الترميز وتحويل الترميز للملفات.
توسيع نطاق ميزة إدخال البيانات
- أحداث المؤشر: يمكنك الاستجابة لأحداث اللمس والقلم والماوس باستخدام واجهة برمجة تطبيقات واحدة، ما يتيح المزيد من خيارات الإدخال للمستخدمين. اطّلِع أيضًا على أفضل الممارسات بشأن واجهات المستخدم المتوافقة مع اللمس وإدخال المستخدم وعناصر التحكّم.
- Gamepad API: تتيح لتطبيق الويب الاستجابة للإدخالات من وحدات التحكّم الشائعة في الألعاب
- Web HID 🚩: تتيح لتطبيق الويب الوصول إلى أجهزة واجهة المستخدم غير العادية (مثل وحدات التحكّم المخصّصة)
دعم الأجهزة الطرفية المتقدّم
- Web USB: تتيح لتطبيق الويب الوصول إلى أجهزة USB غير عادية (مثل لوحات المفاتيح والفئران) من تطبيقك
- Serial API 🔮: تضيف واجهة برمجة تطبيقات للتواصل مع الأجهزة عبر منفذ تسلسلي فعلي أو افتراضي.
قائمة التحقّق من تطبيق الويب التقدّمي
هل أنت مستعد لبدء تحسين تطبيق الويب التقدّمي باستخدام واجهات برمجة التطبيقات الجديدة والفعّالة هذه؟ اختَر إحدى حالات الاستخدام أدناه للاطّلاع على مجموعة مقترَحة من واجهات برمجة التطبيقات التي يمكنك استخدامها، أو أنشئ قائمة التحقّق الخاصة بك واعمل على إكمالها.