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

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

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

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

توفر واجهة برمجة تطبيقات قفل الشاشة وقفلها طريقة لمنع تعتيم الجهاز وقفله. تتيح هذه القدرة تجارب جديدة تتطلب حتى الآن تطبيقًا خاصًا بنظام التشغيل.

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

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

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

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

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

الوضع الحالي

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

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

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

توفّر واجهة برمجة التطبيقات 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". تساعد هذه السمة مطوّري البرامج على الويب في معرفة الوقت الذي يتم فيه فتح القفل كي لا يكونوا بحاجة إلى تتبُّع ذلك يدويًا. تتوفّر اعتبارًا من الإصدار 87 من Chrome.

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

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

لاستعادة قفل تنشيط الشاشة، استمِع إلى حدث 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. تعمل Glitch بشكل رائع لمشاركة عمليات إعادة الإنشاء السريعة والسهلة.

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

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

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

روابط مفيدة

شكر وتقدير

صورة رئيسية من إعداد كايت ستون ماثيسون على Unلمحة. فيديو حول إدارة المهام مقدَّم من هنري ليم.