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

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

ما هي واجهة برمجة التطبيقات Idle Detection API؟

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

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

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

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

الوضع الحالي

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

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

رصد الميزات

للتحقّق مما إذا كانت واجهة برمجة التطبيقات 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 في "أدوات مطوّري البرامج"

دعم أداة Puppeteer

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

عرض توضيحي

يمكنك الاطّلاع على واجهة برمجة تطبيقات Idle Detection وهي قيد التشغيل من خلال الإصدار التجريبي من Ephemeral Canvas والذي يمحو المحتوى بعد 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؟ يساعد دعمك العلني فريق Chrome في تحديد الميزات التي يجب أن تحظى بالأولوية، ويُظهر لموفّري المتصفّحات الآخرين مدى أهمية توفير هذه الميزات.

روابط مفيدة

شكر وتقدير

نفَّذ سام غوتو واجهة برمجة التطبيقات Idle Detection API. تمت إضافة دعم "أدوات مطوري البرامج" من قِبل Maksim Sadym. نشكر جو ميدلي، كايسي باسكيز، و ريللي غرانت على مراجعاتهم لهذه المقالة. صورة الجزء الرئيسي من تصميم فرناندو هيرنانديز على Unsplash.