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

تاريخ النشر: 18 أيار (مايو) 2020

Browser Support

  • Chrome: 94.
  • Edge: 114.
  • Firefox: not supported.
  • Safari: not supported.

Source

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

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

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

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

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

للتحقّق مما إذا كانت واجهة برمجة التطبيقات Idle Detection API متوافقة، استخدِم ما يلي:

if ('IdleDetector' in window) {
  // Idle Detector API supported
}

مفاهيم واجهة برمجة التطبيقات

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

  • حالة عدم النشاط لدى المستخدم: active أو idle: يشير ذلك إلى ما إذا كان المستخدم قد تفاعل مع وكيل المستخدم خلال فترة زمنية معيّنة.
  • حالة عدم نشاط الشاشة: locked أو unlocked: يحتوي النظام على قفل شاشة نشط (مثل شاشة توقّف) يمنع التفاعل مع وكيل المستخدم.

يتطلّب التمييز بين active وidle استخدام طرق استدلالية قد تختلف حسب المستخدم ووكيل المستخدم ونظام التشغيل. ويجب أن يكون الحد الأدنى معقولاً (راجِع الأمان والأذونات).

لا يميّز النموذج عمدًا بشكل رسمي بين التفاعل مع محتوى معيّن (أي صفحة الويب في علامة تبويب تستخدم واجهة برمجة التطبيقات) أو وكيل المستخدم ككل أو نظام التشغيل، بل يترك هذا التعريف لوكيل المستخدم.

طلب الأذونات وإنشاء مثيل

الخطوة الأولى عند استخدام واجهة برمجة التطبيقات 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.');

الدعم في "أدوات مطوّري البرامج"

يمكنك محاكاة أحداث عدم النشاط في "أدوات مطوّري البرامج" بدون أن تكون غير نشط فعليًا. في "أدوات مطوّري البرامج"، افتح علامة التبويب أجهزة الاستشعار وابحث عن محاكاة حالة أداة Idle Detector. يمكنك الاطّلاع على الخيارات المختلفة في الفيديو.

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

دعم Puppeteer

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

عرض توضيحي

يمكنك الاطّلاع على طريقة عمل واجهة برمجة التطبيقات Idle Detection API من خلال العرض التوضيحي لـ Ephemeral Canvas الذي يمحو محتواه بعد 60 ثانية من عدم النشاط. يمكنك تخيّل استخدامها في متجر متعدد الأقسام ليرسم الأطفال عليها.

عرض توضيحي لتطبيق Ephemeral Canvas

Polyfill

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

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

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

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

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

الملاحظات

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

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

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

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

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

روابط مفيدة

الإقرارات

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