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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • उपयोगकर्ता के इनऐक्टिव होने की स्थिति: 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 टीम, काम न करने वाले एपीआई के इस्तेमाल से जुड़े आपके अनुभव जानना चाहती है.

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

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

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

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

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

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

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

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

स्वीकार की गई

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