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

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

ما هي واجهة برمجة تطبيقات الكشف عن عدم النشاط؟

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

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

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

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

الوضع الحالي

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

طريقة استخدام واجهة برمجة تطبيقات 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

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

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

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

أداة محاكاة حالة أداة كشف وضع الخمول في "أدوات مطوّري البرامج"

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

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

عرض توضيحي

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

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

الملء البولي

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

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

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

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

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

ملاحظات

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

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

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

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

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

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

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

روابط مفيدة

شكر وتقدير

نفّذ Sam Goto واجهة برمجة تطبيقات Idle Detection. تمت إضافة دعم "أدوات مطوري البرامج" من قِبل Maksim Sadym. مع أطيب التحيّات، جو ميدلي كايس باسك Reilly Grant لمراجعاتهم لهذه المقالة. صورة الجزء الرئيسي من تصميم فرناندو هيرنانديز على إزالة البداية