استخدِم واجهة برمجة التطبيقات Idle Detection API لمعرفة الحالات التي لا يستخدم فيها المستخدم جهازه بشكل نشط.
ما هي واجهة برمجة التطبيقات Idle Detection API؟
تُرسِل واجهة برمجة التطبيقات Idle Detection API إشعارًا للمطوّرين عندما يكون المستخدم غير نشط، ما يشير إلى عدم التفاعل مع لوحة المفاتيح أو الماوس أو الشاشة أو تفعيل شاشة استراحة أو قفل الشاشة أو الانتقال إلى شاشة مختلفة. يتم إرسال الإشعار عند بلوغ حدّ معيّن يحدّده المطوّر.
حالات الاستخدام المقترَحة لواجهة برمجة التطبيقات Idle Detection API
تشمل الأمثلة على المواقع الإلكترونية التي قد تستخدم واجهة برمجة التطبيقات هذه ما يلي:
- يمكن لتطبيقات المحادثة أو مواقع التواصل الاجتماعي على الإنترنت استخدام واجهة برمجة التطبيقات هذه لإعلام المستخدم ما إذا كان بإمكانه حاليًا الاتّصال بجهات اتصاله.
- يمكن لتطبيقات kiosk المتاحة للجميع، مثل تلك المعروضة في المتاحف، استخدام واجهة برمجة التطبيقات هذه للعودة إلى عرض "الصفحة الرئيسية" إذا لم يتفاعل أحد مع kiosk بعد الآن.
- التطبيقات التي تتطلّب عمليات حسابية مُكلفة، مثل رسم الرسوم البيانية، يمكنها حصر هذه العمليات الحسابية باللحظات التي يتفاعل فيها المستخدم مع جهازه.
الوضع الحالي
الخطوة | الحالة |
---|---|
1. إنشاء فيديو توضيحي | مكتمل |
2. إنشاء مسودة أولية للمواصفة | مكتمل |
3- جمع الملاحظات وتحسين التصميم | قيد التقدّم |
4. مرحلة التجربة والتقييم | مباريات مكتملة |
5- إطلاق | Chromium 94 |
كيفية استخدام واجهة برمجة التطبيقات Idle Detection API
رصد الميزات
للتحقّق مما إذا كانت واجهة برمجة التطبيقات Idle Detection API متوافقة، استخدِم:
if ('IdleDetector' in window) {
// Idle Detector API supported
}
مفاهيم Idle Detection API
تفترض واجهة برمجة التطبيقات Idle Detection API أنّ هناك مستوى معيّنًا من التفاعل بين المستخدم ووكيل المستخدم (أي المتصفّح) ونظام التشغيل للجهاز المستخدَم. يتم تمثيل ذلك في بُعدَين:
- حالة المستخدم في وضع السكون:
active
أوidle
: يشير ذلك إلى ما إذا كان المستخدم قد تعامل مع وكيل المستخدم أو لم يتعامل معه خلال فترة زمنية معيّنة. - حالة عدم استخدام الشاشة:
locked
أوunlocked
: تم تفعيل قفل شاشة في النظام (مثل شاشة الاستراحة) يمنع التفاعل مع وكيل المستخدم.
يتطلّب التمييز بين active
وidle
استخدام أساليب استقرائية قد تختلف حسب المستخدم ووكيل المستخدم
ونظام التشغيل. ويجب أن يكون أيضًا حدًا أدنى خشنًا معقولًا
(راجِع الأمان والأذونات).
لا يُفرِّق النموذج بشكلٍ رسمي بين التفاعل مع محتوى معيّن (أي صفحة الويب في علامة تبويب باستخدام واجهة برمجة التطبيقات) أو وكيل المستخدم ككل أو نظام التشغيل، ويُترك هذا التعريف لوكيل المستخدم.
استخدام واجهة برمجة التطبيقات Idle Detection API
الخطوة الأولى عند استخدام واجهة برمجة التطبيقات Idle Detection API هي
التأكّد من منح الإذن 'idle-detection'
.
إذا لم يتم منح الإذن، عليك
طلبه من خلال IdleDetector.requestPermission()
.
يُرجى العِلم أنّ استدعاء هذه الطريقة يتطلّب إيماءة من المستخدِم.
// Make sure 'idle-detection' permission is granted.
const state = await IdleDetector.requestPermission();
if (state !== 'granted') {
// Need to request permission first.
return console.log('Idle detection permission not granted.');
}
الخطوة الثانية هي إنشاء مثيل للعنصر IdleDetector
.
الحد الأدنى لقيمة threshold
هو 60,000 ملي ثانية (دقيقة واحدة).
يمكنك أخيرًا بدء ميزة رصد الخمول من خلال استدعاء start()
في IdleDetector
.
تأخذ هذه الدالة كائنًا يتضمّن وقت الاستراحة المطلوب threshold
بالكيلوميلّي ثانية
وsignal
اختياريًا مع
AbortSignal
لإيقاف رصد وقت الاستراحة كمَعلمات.
try {
const controller = new AbortController();
const signal = controller.signal;
const idleDetector = new IdleDetector();
idleDetector.addEventListener('change', () => {
const userState = idleDetector.userState;
const screenState = idleDetector.screenState;
console.log(`Idle change: ${userState}, ${screenState}.`);
});
await idleDetector.start({
threshold: 60000,
signal,
});
console.log('IdleDetector is active.');
} catch (err) {
// Deal with initialization errors like permission denied,
// running outside of top-level frame, etc.
console.error(err.name, err.message);
}
يمكنك إيقاف ميزة رصد التوقف عن العمل عن طريق استدعاء abort()
طريقة AbortController
.
controller.abort();
console.log('IdleDetector is stopped.');
دعم أدوات مطوري البرامج
بدءًا من الإصدار 94 من Chromium، يمكنك محاكاة أحداث الخمول في DevTools بدون أن يكون التطبيق في وضع الخمول فعليًا. في أدوات مطوّري البرامج، افتح علامة التبويب أجهزة الاستشعار وابحث عن محاكاة حالة أداة Idle Detector. يمكنك الاطّلاع على الخيارات المختلفة في الفيديو أدناه.
دعم Puppeteer
اعتبارًا من الإصدار 5.3.1 من Puppeteer، يمكنك محاكاة حالات السكون المختلفة لاختبار كيفية تغيُّر سلوك تطبيق الويب آليًا.
عرض توضيحي
يمكنك الاطّلاع على واجهة برمجة التطبيقات Idle Detection API أثناء استخدام العرض التجريبي لميزة "لوحة الصورة المؤقتة" التي تمحو محتوياتها بعد 60 ثانية من عدم النشاط. يمكنك تخيل استخدام هذه الميزة في أحد متاجر البيع بالتجزئة ليتسنى للأطفال الرسم عليها.
تقنية polyfill
يمكن استخدام بعض جوانب واجهة برمجة التطبيقات Idle Detection API مع polyfill وتتوفّر مكتبات لاكتشاف حالة عدم النشاط مثل idle.ts، ولكنّ هذه الأساليب مقيّدة بمنطقة محتوى تطبيق الويب: يجب أن تجري المكتبة التي تعمل في سياق تطبيق الويب استطلاعات باهظة التكلفة لأحداث الإدخال أو الاستماع إلى تغييرات مستوى العرض. ومع ذلك، لا يمكن للمكتبات اليوم معرفة ما إذا كان المستخدم غير نشط خارج منطقة المحتوى (على سبيل المثال، عندما يكون المستخدم في علامة تبويب مختلفة أو سجّل الخروج من جهاز الكمبيوتر بالكامل).
الأمان والأذونات
لقد صمم فريق Chrome واجهة برمجة التطبيقات Idle Detection API ونفّذها باستخدام المبادئ الأساسية
المحدّدة في مقالة التحكّم في الوصول إلى ميزات فعّالة لمنصّة الويب،
بما في ذلك التحكّم الذي يمارسه المستخدم والشفافية وسهولة الاستخدام.
يتم التحكّم في إمكانية استخدام واجهة برمجة التطبيقات هذه من خلال
إذن 'idle-detection'
.
لاستخدام واجهة برمجة التطبيقات، يجب أيضًا أن يكون التطبيق قيد التشغيل في
سياق آمن من المستوى الأعلى.
أدوات التحكّم والخصوصية المتاحة للمستخدم
نسعى دائمًا إلى منع الجهات الضارّة من إساءة استخدام واجهات برمجة التطبيقات الجديدة. قد تحصل المواقع الإلكترونية التي تبدو مستقلة، ولكنّها في الواقع تخضع للتحكّم من قِبل الجهة نفسها، على معلومات عن وقت استراحة المستخدمين وتربط البيانات لتحديد المستخدمين الفريدين من جميع المصادر. للحدّ من هذا النوع من الهجمات، تفرض واجهة برمجة التطبيقات Idle Detection API قيودًا على دقة الأحداث التي يتم الإبلاغ عنها على أنّها غير نشطة.
ملاحظات
يريد فريق Chrome معرفة تجاربك مع واجهة برمجة التطبيقات Idle Detection API.
أخبِرنا عن تصميم واجهة برمجة التطبيقات.
هل هناك مشكلة في واجهة برمجة التطبيقات لا تعمل على النحو المتوقّع؟ هل هناك طُرق أو سمات مفقودة تحتاجها لتنفيذ فكرتك؟ هل لديك سؤال أو تعليق بشأن نموذج الأمان؟ يمكنك الإبلاغ عن مشكلة في المواصفات في مستودع GitHub المقابل، أو إضافة ملاحظاتك إلى مشكلة حالية.
الإبلاغ عن مشكلة في التنفيذ
هل رصدت خطأ في عملية تنفيذ Chrome؟ أم أنّ عملية التنفيذ مختلفة عن المواصفات؟
يمكنك الإبلاغ عن خلل على الرابط new.crbug.com. احرص على تضمين أكبر قدر ممكن من التفاصيل،
وتعليمات بسيطة لإعادة إنتاج الخلل، وأدخِل Blink>Input
في مربّع المكوّنات.
يُعدّ تطبيق Glitch مثاليًا لمشاركة عمليات إعادة الإنتاج بسرعة وسهولة.
إظهار الدعم لواجهة برمجة التطبيقات
هل تخطّط لاستخدام واجهة برمجة التطبيقات Idle Detection API؟ يساعد دعمك العلني فريق Chrome في تحديد الميزات التي يجب أن تحظى بالأولوية، ويُظهر لموفّري المتصفّحات الآخرين مدى أهمية توفير هذه الميزات.
- شارِك كيفية استخدامك له في سلسلة محادثات Discourse في WICG.
- أرسِل تغريدة إلى @ChromiumDev باستخدام الهاشتاغ
#IdleDetection
وأطلِعنا على مكان استخدامك للميزة وطريقة استخدامك لها.
روابط مفيدة
- شرح موجز للجمهور العام
- مسودة المواصفات
- العرض التوضيحي لواجهة برمجة التطبيقات Idle Detection API | مصدر العرض التوضيحي لواجهة برمجة التطبيقات Idle Detection API
- خطأ في التتبّع
- إدخال ChromeStatus.com
- عنصر Blink:
Blink>Input
الشكر والتقدير
نفَّذ سام غوتو واجهة برمجة التطبيقات Idle Detection API. أضاف Maksim Sadym ميزة التوافق مع أدوات مطوري البرامج. نشكر جو ميدلي، كايسي باسكيز، و ريللي غرانت على مراجعاتهم لهذه المقالة. صورة الجزء الرئيسي من تصميم فرناندو هيرنانديز على Unsplash.