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

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

आइडल डिटेक्शन एपीआई क्या है?

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

आइडल डिटेक्शन एपीआई के लिए, इस्तेमाल के सुझाए गए उदाहरण

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

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

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

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

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

सुविधा की पहचान करने की सुविधा

यह देखने के लिए कि डिवाइस कुछ समय से इस्तेमाल में नहीं है, उसका पता लगाने वाला एपीआई काम करता है या नहीं, इसका इस्तेमाल करें:

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

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

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

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

डेमो

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

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

पॉलीफ़िलिंग

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

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

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

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

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

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

Chrome टीम, कुछ समय से इस्तेमाल में न होने पर पता लगाने वाले एपीआई के साथ आपके अनुभवों के बारे में जानना चाहती है.

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

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

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

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

एपीआई के साथ काम करता है

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

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

मददगार लिंक

स्वीकार हैं

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