البقاء في الوضع النشط مع واجهة برمجة التطبيقات Screen Wake Lock

توفّر واجهة برمجة التطبيقات Screen Wake Lock API وسيلة لمنع الأجهزة من تعتيم الشاشة أو قفلها عندما يكون هناك حاجة إلى مواصلة تشغيل أحد التطبيقات.

ما هي واجهة برمجة التطبيقات Screen Wake Lock API؟

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

توفّر واجهة برمجة التطبيقات Screen Wake Lock API وسيلة لمنع تعتيم الجهاز. وقفل الشاشة. هذا النمط تتيح تجارب جديدة تتطلب، حتى الآن، تطبيقًا خاصًا بالنظام الأساسي.

تحدّ واجهة برمجة التطبيقات Screen Wake Lock API من حاجة المستخدمين إلى الثغرات الأمنية المُحتمَلة وغير ذلك الكثير. يعالج أوجه القصور في واجهة برمجة التطبيقات القديمة كان مقتصرًا على إبقاء الشاشة قيد التشغيل، وكان هناك عدد من مشكلات الأمان والخصوصية.

حالات الاستخدام المقترَحة لواجهة برمجة التطبيقات Screen Wake Lock API

RioRun، تطبيق ويب من تطوير The Guardian، كانت حالة استخدام مثالية (على الرغم من أنها لم تعد متاحة). يأخذك التطبيق في جولة صوتية افتراضية في ريو، متبعًا مسار مؤتمر 2016 الماراثون الأولمبي. بدون عمليات قفل التنشيط، لن يكون لدى المستخدمين سيتم إيقاف تشغيل الشاشات بشكل متكرر أثناء تشغيل الجولة، مما يصعب استخدامها.

بالطبع، هناك العديد من حالات الاستخدام الأخرى:

  • تطبيق لوصفات طعام يبقي الشاشة مشغّلة أثناء خبز كعكة أو الطهو العشاء
  • تطبيق يعرض بطاقة صعود الطائرة أو التذاكر ويحافظ على الشاشة تفعيل إلى أن يتم مسح الرمز الشريطي ضوئيًا
  • تطبيق بنمط Kiosk يعمل على إبقاء الشاشة مفعَّلة
  • تطبيق عرض تقديمي مستند إلى الويب يحافظ على الشاشة خلال العرض التقديمي

الوضع الحالي

الخطوة الحالة
1. إنشاء شرح لا ينطبق
2. إنشاء مسودة أولية للمواصفات مكتمل
3- جمع الملاحظات وتكرار التصميم مكتمل
4. مرحلة التجربة والتقييم مكتملة
5- الإطلاق مكتمل

استخدام واجهة برمجة التطبيقات Screen Wake Lock API

أنواع قفل التنشيط

توفِّر واجهة برمجة التطبيقات Screen Wake Lock API حاليًا نوعًا واحدًا فقط من قفل التنشيط: screen.

قفل تنشيط screen

يمنع قفل التنشيط screen شاشة الجهاز من الدوران. حتى يتمكن المستخدم من رؤية المعلومات المعروضة على الشاشة.

الحصول على قفل تنشيط الشاشة

لطلب تفعيل قفل الشاشة، يجب استدعاء طريقة navigator.wakeLock.request() التي تُرجع كائن WakeLockSentinel. وتمرر هذه الطريقة نوع قفل التنشيط المطلوب كمعلمة، التي تقتصر حاليًا على 'screen' فقط، وبالتالي تكون اختيارية. يمكن للمتصفح رفض الطلب لأسباب مختلفة (على سبيل المثال، لأنّ مستوى شحن البطارية منخفض جدًا)، ومن الممارسات الجيدة إنهاء المكالمة باستخدام عبارة try…catch. وستتضمّن رسالة الاستثناء مزيدًا من التفاصيل في حال تعذّر إتمام العملية.

إيقاف قفل تنشيط الشاشة

كما أنك بحاجة إلى طريقة لفتح قفل تنشيط الشاشة، وهو ما يتم عن طريق استدعاء الطريقة release() للكائن WakeLockSentinel. إذا لم تخزّن إشارة إلى WakeLockSentinel، ما مِن طريقة لفتح القفل يدويًا، ولكن سيتم تحريره بعد اختفاء علامة التبويب الحالية.

إذا أردت فتح قفل تنشيط الشاشة تلقائيًا بعد مرور فترة زمنية معينة، يمكنك استخدام window.setTimeout() لطلب الرقم release()، كما هو موضح في المثال أدناه.

// The wake lock sentinel.
let wakeLock = null;

// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
  try {
    wakeLock = await navigator.wakeLock.request();
    wakeLock.addEventListener('release', () => {
      console.log('Screen Wake Lock released:', wakeLock.released);
    });
    console.log('Screen Wake Lock released:', wakeLock.released);
  } catch (err) {
    console.error(`${err.name}, ${err.message}`);
  }
};

// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
  wakeLock.release();
  wakeLock = null;
}, 5000);

يحتوي الكائن WakeLockSentinel على سمة تُسمى released إلى ما إذا كان قد تم تحرير رسالة الحارس بالفعل. تكون قيمتها false في البداية، وتتغيّر إلى true بعد "release". إرسال الحدث. يساعد هذا الموقع مطوّري البرامج على الويب في معرفة وقت قفل حتى لا تحتاج إلى تتبُّعها يدويًا. وتتوفَّر بدءًا من إصدار Chrome 87.

مراحل نشاط قفل تنشيط الشاشة

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

لإعادة الحصول على قفل تنشيط الشاشة، استمِع إلى حدث visibilitychange. وطلب قفل تنشيط شاشة جديد عند حدوثه:

const handleVisibilityChange = async () => {
  if (wakeLock !== null && document.visibilityState === 'visible') {
    await requestWakeLock();
  }
};

document.addEventListener('visibilitychange', handleVisibilityChange);

تقليل تأثيرك على موارد النظام

هل يجب استخدام قفل تنشيط الشاشة في تطبيقك؟ ويعتمد النهج الذي تتبعه على احتياجات تطبيقك. بغض النظر، يجب عليك استخدام أسهل طريقة ممكنة لتطبيقك لتقليل التأثير على موارد النظام.

قبل إضافة قفل تنشيط الشاشة إلى تطبيقك، يجب التحقّق ممّا إذا كان من الممكن أن تؤدي حالات الاستخدام إلى باستخدام أحد الحلول البديلة التالية:

عرض توضيحي

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

عمليات قفل الشاشة في "إدارة مهام نظام التشغيل"

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

ملاحظات

Web Platform Incubator Community Group (WICG) ويريد فريق Chrome معرفة المزيد عن وأفكارهم وخبراتهم مع واجهة برمجة التطبيقات Screen Wake Lock API.

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

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

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

هل واجهت مشكلة في التنفيذ في Chrome؟ أم أن التنفيذ عن المواصفات؟

  • يمكنك الإبلاغ عن الخطأ على https://new.crbug.com. تأكد من تضمين أكبر قدر قدر الإمكان، وتقديم تعليمات بسيطة لإعادة إنتاج الخطأ، ضبط المكونات على Blink>WakeLock. ميزة الخطأ تعمل بشكل رائع لمشاركة النسخ المُعاد إنتاجها بسرعة وسهولة.

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

هل لديك خطة لاستخدام واجهة برمجة تطبيقات Screen Wake Lock API؟ يساعد دعمك العام يعطي فريق Chrome الأولوية للميزات ويُظهر لموردي المتصفحات الآخرين مدى أمرًا بالغ الأهمية لدعمهم.

  • شارِك كيف تخطط لاستخدام واجهة برمجة التطبيقات في سلسلة محادثات WICG Discourse.
  • إرسال تغريدة إلى @ChromiumDev باستخدام علامة التصنيف #WakeLock عليك إعلامنا بمكان تطبيقك وطريقة استخدامه

روابط مفيدة

شكر وتقدير

الصورة الرئيسية من تصميم Kate Stone Matheson على Unسبل فيديو مدير المهام مقدمة من هنري ليم