رصد المستخدمين غير النشطين باستخدام واجهة برمجة التطبيقات 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 API

رصد الميزات

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

يمكنك إلغاء عملية رصد عدم النشاط لفترة قصيرة من خلال استدعاء طريقة AbortController abort().

controller.abort();
console.log('IdleDetector is stopped.');

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

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

محاكاة حالة "أداة رصد عدم النشاط" في "أدوات مطوري البرامج".

دعم محرّك العرائس

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

الخصائص الديموغرافية

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

الإصدار التجريبي من "لوحة الرسم المؤقت"

الملء التلقائي

هناك بعض جوانب واجهة برمجة التطبيقات Idle Detection API عبارة عن مكتبات رصد غير قابلة للتعبئة، مثل مكتبات رصد وضع عدم النشاط مثل 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 في تحديد أولويات الميزات ويوضح لمورّدي المتصفِّح الآخرين مدى أهمية دعمهم.

روابط مفيدة

شكر وتقدير

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