توفر واجهة برمجة تطبيقات 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.
أخبرنا عن تصميم واجهة برمجة التطبيقات
هل هناك أي مشكلة في واجهة برمجة التطبيقات لا تعمل كما هو متوقع؟ أو هل هناك طرق أو خصائص مفقودة تحتاج إلى تنفيذ فكرتك؟
- يمكنك الإبلاغ عن مشكلة في المواصفات من خلال مستودع GitHub API لقفل الشاشة أو إضافة أفكارك إلى مشكلة حالية.
الإبلاغ عن مشكلة في التنفيذ
هل واجهت خطأً في تنفيذ Chrome؟ أم أن التنفيذ مختلف عن المواصفات؟
- عليك الإبلاغ عن الخطأ على https://new.crbug.com. واحرص على تضمين أكبر قدر ممكن
من التفاصيل، وتقديم تعليمات بسيطة لإعادة إنتاج الخطأ، وضبط المكوّنات على
Blink>WakeLock
. تعمل Glitch بشكل رائع لمشاركة عمليات إعادة الإنشاء السريعة والسهلة.
إظهار الدعم لواجهة برمجة التطبيقات
هل تخطّط لاستخدام واجهة برمجة تطبيقات Screen Wake Lock API؟ يساعد الدعم العام فريق Chrome في تحديد أولويات الميزات ويُظهر لمورّدي المتصفِّح الآخرين مدى أهمية دعمهم لهم.
- شارِك كيف تخطّط لاستخدام واجهة برمجة التطبيقات على سلسلة محادثات WICG Discourse.
- يمكنك إرسال تغريدة إلى @ChromiumDev باستخدام الهاشتاغ
#WakeLock
وإعلامنا بمكان استخدامك لها وطريقة استخدامك لها.
روابط مفيدة
- المواصفات اقتراح المرشح | مسودة المحرِّر
- العرض التوضيحي لقفل الشاشة من خلال تنشيط الشاشة | مصدر العرض التوضيحي لقفل تنشيط الشاشة
- خطأ في التتبُّع
- إدخال ChromeStatus.com
- تجربة واجهة برمجة تطبيقات Wake Lock
- مكوّن Blink:
Blink>WakeLock
شكر وتقدير
صورة رئيسية من إعداد كايت ستون ماثيسون على Unلمحة. فيديو حول إدارة المهام مقدَّم من هنري ليم.