رصد المستخدمين غير النشطين باستخدام واجهة برمجة التطبيقات Idle Detection API

استخدِم واجهة برمجة التطبيقات Idle Detection API لمعرفة الحالات التي لا يستخدم فيها المستخدم جهازه بشكل نشط.

تُرسِل واجهة برمجة التطبيقات Idle Detection API إشعارًا للمطوّرين عندما يكون المستخدم غير نشط، ما يشير إلى عدم التفاعل مع لوحة المفاتيح أو الماوس أو الشاشة أو تفعيل شاشة استراحة أو قفل الشاشة أو الانتقال إلى شاشة مختلفة. يتم إرسال الإشعار من خلال الحدّ الذي يحدّده المطوّر.

حالات الاستخدام المقترَحة لواجهة برمجة التطبيقات Idle Detection API

تتضمّن أمثلة المواقع الإلكترونية التي قد تستخدم واجهة برمجة التطبيقات هذه ما يلي:

  • يمكن لتطبيقات المحادثة أو مواقع التواصل الاجتماعي على الإنترنت استخدام واجهة برمجة التطبيقات هذه لإعلام المستخدم ما إذا كان بإمكانه حاليًا الاتّصال بجهات اتصاله.
  • يمكن لتطبيقات kiosk المتاحة للجميع، مثل تلك المعروضة في المتاحف، استخدام واجهة برمجة التطبيقات هذه للعودة إلى عرض "الصفحة الرئيسية" إذا لم يتفاعل أحد مع kiosk بعد الآن.
  • التطبيقات التي تتطلّب عمليات حسابية مُكلفة، مثل رسم الرسوم البيانية، يمكنها حصر هذه العمليات الحسابية باللحظات التي يتفاعل فيها المستخدم مع جهازه.

الوضع الحالي

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

كيفية استخدام واجهة برمجة التطبيقات 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. يمكنك مشاهدة الخيارات المختلفة في الفيديو أدناه.

محاكاة حالة أداة Idle Detector في "أدوات مطوّري البرامج"

دعم محرّك الدُمى

اعتبارًا من الإصدار 5.3.1 من Puppeteer، يمكنك محاكاة حالات السكون المختلفة لاختبار كيفية تغيُّر سلوك تطبيق الويب آليًا.

عرض توضيحي

يمكنك الاطّلاع على واجهة برمجة التطبيقات Idle Detection API أثناء استخدام العرض التجريبي لميزة "لوحة الصورة المؤقتة" التي تمحو محتوياتها بعد 60 ثانية من عدم النشاط. يمكنك تخيل استخدام هذه الميزة في أحد متاجر البيع بالتجزئة ليتسنى للأطفال الرسم عليها.

عرض توضيحي للوحة الرسم المؤقتة

polyfill

يمكن استخدام بعض جوانب واجهة برمجة التطبيقات Idle Detection API مع polyfill وتتوفّر مكتبات لاكتشاف حالة عدم النشاط مثل idle.ts، ولكنّ هذه الأساليب مقيّدة بمنطقة محتوى تطبيق الويب: يجب أن تجري المكتبة التي تعمل في سياق تطبيق الويب استطلاعات باهظة التكلفة لأحداث الإدخال أو الاستماع إلى تغييرات مستوى العرض. ومع ذلك، لا يمكن للمكتبات اليوم معرفة ما إذا كان المستخدم غير نشط خارج منطقة المحتوى (على سبيل المثال، عندما يكون المستخدم في علامة تبويب مختلفة أو سجّل الخروج من جهاز الكمبيوتر بالكامل).

الأمان والأذونات

صمَّم فريق Chrome ونفَّذ واجهة برمجة التطبيقات Idle Detection باستخدام المبادئ الأساسية المحددة في التحكُّم في الوصول إلى ميزات النظام الأساسي الفعّال للويب، بما في ذلك إمكانية تحكُّم المستخدم والشفافية وسهولة الاستخدام. يتم التحكّم في إمكانية استخدام واجهة برمجة التطبيقات هذه من خلال إذن 'idle-detection'. لاستخدام واجهة برمجة التطبيقات، يجب أيضًا أن يكون التطبيق قيد التشغيل في سياق آمن من المستوى الأعلى.

تحكُّم المستخدم والخصوصية

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

ملاحظات

يريد فريق Chrome معرفة تجاربك مع واجهة برمجة التطبيقات Idle Detection API.

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

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

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

هل رصدت خطأ في عملية تنفيذ Chrome؟ أم أن التنفيذ يختلف عن المواصفات؟ يمكنك الإبلاغ عن خلل على الرابط new.crbug.com. احرص على تضمين أكبر قدر ممكن من التفاصيل، وتعليمات بسيطة لإعادة إنتاج الخلل، وأدخِل Blink>Input في مربّع المكوّنات. يُعدّ تطبيق Glitch مثاليًا لمشاركة عمليات إعادة الإنتاج بسرعة وسهولة.

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

هل تخطّط لاستخدام واجهة برمجة التطبيقات Idle Detection API؟ يساعد دعمك العلني فريق Chrome في تحديد الميزات التي يجب أن تحظى بالأولوية، ويُظهر لموفّري المتصفّحات الآخرين مدى أهمية توفير هذه الميزات.

روابط مفيدة

شكر وتقدير

نفّذ Sam Goto واجهة برمجة تطبيقات Idle Detection. أضاف Maksim Sadym ميزة التوافق مع أدوات مطوري البرامج. نشكر جو ميدلي، كايسي باسكيز، و ريللي غرانت على مراجعاتهم لهذه المقالة. صورة البطل هي من تصميم فرناندو هيرنانديز على قناة Unسباش.