आइडल डिटेक्शन एपीआई की मदद से, इनऐक्टिव उपयोगकर्ताओं का पता लगाएं

इस एपीआई का इस्तेमाल करके, यह पता लगाया जा सकता है कि लोग अपने डिवाइस का इस्तेमाल कब नहीं कर रहे होते.

कुछ समय से इस्तेमाल न होने का पता लगाने वाला एपीआई क्या है?

जब कोई उपयोगकर्ता कुछ समय से इस्तेमाल में नहीं है, तो इनऐक्टिव डिटेक्शन एपीआई की मदद से डेवलपर को कीबोर्ड, माउस, स्क्रीन, स्क्रीन सेवर की सुविधा चालू होने, स्क्रीन लॉक होने या किसी दूसरी स्क्रीन पर जाने जैसी चीज़ों के बारे में सूचना दी जाती है. डेवलपर की तय की गई सीमा पार होने पर सूचना ट्रिगर होती है.

कुछ समय से इस्तेमाल न होने का पता लगाने वाले एपीआई के इस्तेमाल के सुझाए गए उदाहरण

इस एपीआई का इस्तेमाल करने वाली साइटों के उदाहरणों में ये शामिल हैं:

  • चैट ऐप्लिकेशन या ऑनलाइन सोशल नेटवर्किंग साइटें, इस एपीआई का इस्तेमाल करके उपयोगकर्ता को यह बता सकती हैं कि फ़िलहाल उनके संपर्कों से संपर्क किया जा सकता है या नहीं.
  • सार्वजनिक तौर पर उपलब्ध कीऑस्क ऐप्लिकेशन, जैसे कि संग्रहालयों में मौजूद ऐप्लिकेशन, इस एपीआई का इस्तेमाल करके "होम" व्यू पर वापस आ सकते हैं. ऐसा तब होता है, जब कोई भी व्यक्ति कीऑस्क के साथ इंटरैक्ट न करे.
  • जिन ऐप्लिकेशन में चार्ट बनाने जैसी ज़्यादा मेमोरी और प्रोसेसिंग की ज़रूरत होती है वे इन गणनाओं को सिर्फ़ तब कर सकते हैं, जब उपयोगकर्ता अपने डिवाइस से इंटरैक्ट करता है.

मौजूदा स्थिति

चरण स्थिति
1. एक्सप्लेनर वीडियो बनाना पूरा हो गया
2. स्पेसिफ़िकेशन का शुरुआती ड्राफ़्ट बनाना पूरा हुआ
3. सुझाव/राय इकट्ठा करना और डिज़ाइन में बदलाव करना प्रोसेस जारी है
4. ऑरिजिन ट्रायल पूरा हुआ
5. लॉन्च करना Chromium 94

कुछ समय से इस्तेमाल न होने का पता लगाने वाले एपीआई का इस्तेमाल करने का तरीका

फ़ीचर का पता लगाना

यह देखने के लिए कि Idle Detection API काम करता है या नहीं, इनका इस्तेमाल करें:

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

कुछ समय से इस्तेमाल में न होने वाले एपीआई के सिद्धांत

Idle Detection API यह मानता है कि उपयोगकर्ता, उपयोगकर्ता एजेंट (यानी ब्राउज़र), और इस्तेमाल किए जा रहे डिवाइस के ऑपरेटिंग सिस्टम के बीच कुछ लेवल का जुड़ाव है. इसे दो डाइमेंशन में दिखाया जाता है:

  • उपयोगकर्ता के इनऐक्टिव होने की स्थिति: active या idle: उपयोगकर्ता ने कुछ समय के लिए, उपयोगकर्ता एजेंट के साथ इंटरैक्ट किया है या नहीं.
  • स्क्रीन के इस्तेमाल में न होने की स्थिति: locked या unlocked: सिस्टम में स्क्रीन लॉक (जैसे, स्क्रीन सेवर) चालू है, जिसकी वजह से उपयोगकर्ता एजेंट के साथ इंटरैक्ट नहीं किया जा सकता.

active और idle को अलग-अलग करने के लिए, उपयोगकर्ता, उपयोगकर्ता एजेंट, और ऑपरेटिंग सिस्टम के हिसाब से अलग-अलग हेयुरिस्टिक्स की ज़रूरत होती है. यह थ्रेशोल्ड भी ज़रूरत के मुताबिक होना चाहिए (सुरक्षा और अनुमतियां देखें).

मॉडल, किसी खास कॉन्टेंट (जैसे, एपीआई का इस्तेमाल करने वाले टैब में मौजूद वेबपेज), पूरे उपयोगकर्ता एजेंट या ऑपरेटिंग सिस्टम के साथ इंटरैक्शन के बीच, जान-बूझकर औपचारिक तौर पर कोई अंतर नहीं करता. यह तय करने का काम उपयोगकर्ता एजेंट का होता है.

कुछ समय से इस्तेमाल में न होने का पता लगाने वाले एपीआई का इस्तेमाल करना

इस्तेमाल न किए जाने का पता लगाने वाले एपीआई का इस्तेमाल करते समय, सबसे पहले यह पक्का करें कि '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 मिलीसेकंड (1 मिनट) होनी चाहिए. आखिर में, IdleDetector के start() तरीके को कॉल करके, डिवाइस के इस्तेमाल में न होने का पता लगाने की सुविधा शुरू की जा सकती है. यह पैरामीटर के तौर पर, एक ऑब्जेक्ट लेता है, जिसमें मिलीसेकंड में, डिवाइस के इस्तेमाल में न होने की अवधि 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.');

DevTools सहायता

Chromium 94 से, DevTools में, बिना किसी ऐक्टिविटी के होने वाले इवेंट को एमुलेट किया जा सकता है. DevTools में, सेंसर टैब खोलें और कुछ समय से इस्तेमाल में नहीं है की स्थिति का पता लगाने वाले टूल की स्थिति को एम्युलेट करें को ढूंढें. नीचे दिए गए वीडियो में, अलग-अलग विकल्प देखे जा सकते हैं.

DevTools में, कुछ समय से इस्तेमाल में नहीं है की स्थिति का पता लगाने वाले टूल की स्थिति को एम्युलेट करना.

Puppeteer से जुड़ी सहायता

Puppeteer के 5.3.1 वर्शन में, अलग-अलग आइडल स्टेटस को एमुलेट किया जा सकता है. इससे, प्रोग्राम के हिसाब से यह जांच की जा सकती है कि आपके वेब ऐप्लिकेशन का व्यवहार कैसे बदलता है.

डेमो

इफ़ेमरल कैनवस डेमो की मदद से, ऐक्टिविटी न होने का पता लगाने वाले एपीआई को काम करते हुए देखा जा सकता है. यह डेमो, 60 सेकंड तक कोई गतिविधि न होने पर अपना कॉन्टेंट मिटा देता है. इसकी मदद से, किसी डिपार्टमेंट स्टोर में बच्चों के लिए डूडल करने की सुविधा दी जा सकती है.

कुछ समय के लिए कैनवस का डेमो

पॉलीफ़िल करना

Idle Detection API के कुछ हिस्सों को पॉलीफ़िल किया जा सकता है और idle.ts जैसी लाइब्रेरी मौजूद हैं. हालांकि, ये तरीके वेब ऐप्लिकेशन के कॉन्टेंट एरिया तक ही सीमित हैं: वेब ऐप्लिकेशन के संदर्भ में चल रही लाइब्रेरी को इनपुट इवेंट के लिए ज़्यादा समय तक पोल करने या विज़िबिलिटी में हुए बदलावों को सुनने की ज़रूरत होती है. हालांकि, ज़्यादा पाबंदी के साथ, लाइब्रेरी यह नहीं बता सकती कि कोई उपयोगकर्ता कब कॉन्टेंट एरिया के बाहर काम नहीं करता (उदाहरण के लिए, जब कोई उपयोगकर्ता किसी दूसरे टैब पर होता है या अपने कंप्यूटर से पूरी तरह लॉग आउट हो जाता है).

सुरक्षा और अनुमतियां

Chrome की टीम ने वेब प्लैटफ़ॉर्म की बेहतर सुविधाओं के ऐक्सेस को कंट्रोल करना में बताए गए मुख्य सिद्धांतों का इस्तेमाल करके, Idle Detection API को डिज़ाइन और लागू किया है. इन सिद्धांतों में, उपयोगकर्ता का कंट्रोल, पारदर्शिता, और काम करने के तरीके शामिल हैं. इस एपीआई का इस्तेमाल करने की अनुमति, 'idle-detection' अनुमति से कंट्रोल की जाती है. एपीआई का इस्तेमाल करने के लिए, यह ज़रूरी है कि ऐप्लिकेशन टॉप-लेवल के सुरक्षित कॉन्टेक्स्ट में चल रहा हो.

उपयोगकर्ता का कंट्रोल और निजता

हम हमेशा से चाहते हैं कि नुकसान पहुंचाने वाले लोग या ग्रुप, नए एपीआई का गलत इस्तेमाल न करें. ऐसी वेबसाइटें जो अलग-अलग लगती हैं, लेकिन असल में एक ही इकाई के कंट्रोल में होती हैं, वे उपयोगकर्ता के खाली समय की जानकारी हासिल कर सकती हैं. साथ ही, सभी ऑरिजिन के यूनीक उपयोगकर्ताओं की पहचान करने के लिए, डेटा को जोड़ सकती हैं. इस तरह के हमलों को कम करने के लिए, कुछ समय से इस्तेमाल में न होने की जानकारी देने वाला एपीआई, रिपोर्ट किए गए इनऐक्टिव इवेंट की जानकारी का स्तर सीमित कर देता है.

सुझाव/राय दें या शिकायत करें

Chrome की टीम, Idle Detection API के इस्तेमाल से जुड़े आपके अनुभवों के बारे में जानना चाहती है.

हमें एपीआई के डिज़ाइन के बारे में बताएं

क्या एपीआई में कुछ ऐसा है जो आपकी उम्मीद के मुताबिक काम नहीं करता? या क्या कुछ ऐसे तरीके या प्रॉपर्टी हैं जिन पर आपको अपने आइडिया को लागू करने की ज़रूरत है? क्या आपको सुरक्षा मॉडल के बारे में कोई सवाल पूछना है या कोई टिप्पणी करनी है? उससे जुड़े GitHub repo पर, खास समस्या की शिकायत करें या किसी मौजूदा समस्या में अपने सुझाव जोड़ें.

लागू करने से जुड़ी समस्या की शिकायत करना

क्या आपको Chrome को लागू करने में कोई गड़बड़ी मिली? या क्या इसे लागू करने का तरीका, खास जानकारी से अलग है? new.crbug.com पर जाकर, गड़बड़ी की शिकायत करें. इसमें ज़्यादा से ज़्यादा जानकारी शामिल करें. साथ ही, गड़बड़ी को दोहराने के लिए आसान निर्देश दें. इसके बाद, Components बॉक्स में Blink>Input डालें. Glitch, तुरंत और आसानी से समस्या की जानकारी शेयर करने के लिए बहुत अच्छा है.

एपीआई के लिए सहायता दिखाना

क्या आपको कुछ समय से इस्तेमाल न होने का पता लगाने वाले एपीआई का इस्तेमाल करना है? सार्वजनिक तौर पर सहायता करने से, Chrome की टीम को सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, इससे अन्य ब्राउज़र वेंडर को यह पता चलता है कि इन सुविधाओं को उपलब्ध कराना कितना ज़रूरी है.

मदद के लिए लिंक

स्वीकार की गई

कुछ समय से इस्तेमाल न होने का पता लगाने वाले एपीआई को सैम गोटो ने लागू किया था. मक्सिम सादिम ने DevTools से मदद पाने की सुविधा जोड़ी. इस लेख की समीक्षा करने के लिए, जो मेडली, केस बेस्केस, और रेली ग्रांट का धन्यवाद. इसकी हीरो इमेज फ़र्नांडो हर्नांडेज़ ने Unस्प्लैश पर बनाई है.