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

यह पता लगाने के लिए कि उपयोगकर्ता अपने डिवाइस का इस्तेमाल कब नहीं कर रहा है, Idle Detection API का इस्तेमाल करें.

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

Idle Detection API, उपयोगकर्ता के डिवाइस के इस्तेमाल न होने पर डेवलपर को सूचना देता है. जैसे, कीबोर्ड, माउस, स्क्रीन के साथ इंटरैक्ट न करना, स्क्रीन सेवर चालू होना, स्क्रीन लॉक होना या किसी दूसरी स्क्रीन पर जाना. डेवलपर की तय की गई सीमा पार होने पर सूचना ट्रिगर होती है.

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

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

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

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

चरण स्थिति
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 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 मिलीसेकंड (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 की टीम को सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, इससे अन्य ब्राउज़र वेंडर को यह पता चलता है कि इन सुविधाओं को उपलब्ध कराना कितना ज़रूरी है.

  • WICG के Discourse थ्रेड पर शेयर करें कि आपको इसका इस्तेमाल कैसे करना है.
  • #IdleDetection हैशटैग का इस्तेमाल करके, @ChromiumDev को ट्वीट करें और हमें बताएं कि इसका इस्तेमाल कहां और कैसे किया जा रहा है.

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

आभार

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