स्क्रीन वेक लॉक एपीआई की मदद से स्क्रीन चालू रखें

स्क्रीन वेक लॉक एपीआई, किसी ऐप्लिकेशन को चालू रखने के लिए डिवाइसों की स्क्रीन की रोशनी कम होने या स्क्रीन लॉक होने से रोकने का एक तरीका है.

स्क्रीन वेक लॉक एपीआई क्या है?

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

स्क्रीन वेक लॉक एपीआई से डिवाइस को स्क्रीन की रोशनी कम और लॉक होने से रोकने में मदद मिलती है. इस क्षमता से नए अनुभव मिलते हैं, जिससे अब तक, इसके लिए प्लैटफ़ॉर्म के हिसाब से खास ऐप्लिकेशन की ज़रूरत पड़ती थी.

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

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

RioRun, The Guardian के वेब ऐप्लिकेशन में काम करने के लिए बिलकुल सही उदाहरण था (हालांकि, अब यह उपलब्ध नहीं है). यह ऐप्लिकेशन 2016 के ओलंपिक मैराथन के दौरान आपको रियो के वर्चुअल ऑडियो टूर पर ले जाता है. वेक लॉक के बिना, टूर चलने के दौरान उपयोगकर्ताओं की स्क्रीन बार-बार बंद हो जाती है, जिससे इसे इस्तेमाल करना मुश्किल हो जाता है.

हालांकि, इस्तेमाल के और भी उदाहरण हैं:

  • एक ऐसा रेसिपी ऐप्लिकेशन जो केक बनाने या डिनर पकाते समय स्क्रीन चालू रखता है
  • बोर्डिंग पास या टिकट ऐप्लिकेशन, जो स्क्रीन को तब तक चालू रखता है, जब तक बारकोड स्कैन नहीं हो जाता
  • कीऑस्क-स्टाइल वाला ऐप्लिकेशन, जो स्क्रीन को लगातार चालू रखता है
  • वेब-आधारित प्रज़ेंटेशन ऐप्लिकेशन, जो प्रज़ेंटेशन के दौरान स्क्रीन को चालू रखता है

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

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

स्क्रीन वेक लॉक एपीआई का इस्तेमाल करना

वेक लॉक के टाइप

फ़िलहाल, स्क्रीन वेक लॉक एपीआई सिर्फ़ एक तरह का वेक लॉक उपलब्ध कराता है: screen.

screen वेक लॉक

screen वेक लॉक, डिवाइस की स्क्रीन को बंद होने से रोकता है, ताकि उपयोगकर्ता स्क्रीन पर दिख रही जानकारी देख सके.

स्क्रीन वेक लॉक की सुविधा चालू की जा रही है

स्क्रीन वेक लॉक का अनुरोध करने के लिए, आपको navigator.wakeLock.request() ऐसे तरीके को कॉल करना होगा जो WakeLockSentinel ऑब्जेक्ट दिखाता है. इस तरीके से, अपनी पसंद के वेक लॉक टाइप को एक पैरामीटर के तौर पर पास किया जाता है. जो फ़िलहाल सिर्फ़ 'screen' तक सीमित है, इसलिए ज़रूरी नहीं है. ब्राउज़र कई वजहों से अनुरोध को अस्वीकार कर सकता है (उदाहरण के लिए, बैटरी चार्ज बहुत कम होने की वजह से), इसलिए, कॉल को try…catch स्टेटमेंट के साथ खत्म करना बेहतर होगा. गड़बड़ी होने पर, अपवाद के मैसेज में ज़्यादा जानकारी शामिल होगी.

स्क्रीन वेक लॉक को रिलीज़ करना

आपको स्क्रीन वेक लॉक को रिलीज़ करने का तरीका भी चाहिए. इसके लिए, WakeLockSentinel ऑब्जेक्ट के release() तरीके को कॉल करें. अगर WakeLockSentinel का रेफ़रंस सेव नहीं किया जाता है, तो लॉक को मैन्युअल तरीके से रिलीज़ नहीं किया जा सकता. हालांकि, मौजूदा टैब के न दिखने पर इसे रिलीज़ कर दिया जाएगा.

अगर आपको तय समय के बाद स्क्रीन वेक लॉक को अपने-आप हटाना है, तो release() को कॉल करने के लिए window.setTimeout() का इस्तेमाल करें. इसका उदाहरण नीचे दिया गया है.

// The wake lock sentinel.
let wakeLock = null;

// Function that attempts to request a screen wake lock.
const requestWakeLock = async () => {
  try {
    wakeLock = await navigator.wakeLock.request();
    wakeLock.addEventListener('release', () => {
      console.log('Screen Wake Lock released:', wakeLock.released);
    });
    console.log('Screen Wake Lock released:', wakeLock.released);
  } catch (err) {
    console.error(`${err.name}, ${err.message}`);
  }
};

// Request a screen wake lock…
await requestWakeLock();
// …and release it again after 5s.
window.setTimeout(() => {
  wakeLock.release();
  wakeLock = null;
}, 5000);

WakeLockSentinel ऑब्जेक्ट में released नाम की प्रॉपर्टी होती है, जिससे पता चलता है कि भेजने वाले को पहले ही रिलीज़ किया गया है या नहीं. शुरुआत में इसकी वैल्यू false है और "release" इवेंट के डिस्पैच होने पर, यह वैल्यू true में बदल जाती है. यह प्रॉपर्टी वेब डेवलपर को यह जानने में मदद करती है कि लॉक कब हटाया गया है, ताकि उन्हें मैन्युअल तरीके से इसे ट्रैक करने की ज़रूरत न पड़े. यह Chrome 87 और उसके बाद के वर्शन में उपलब्ध है.

स्क्रीन वेक लॉक का लाइफ़साइकल

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

स्क्रीन वेक लॉक को फिर से पाने के लिए, visibilitychange इवेंट सुनें और उनके होने पर एक नए स्क्रीन वेक लॉक का अनुरोध करें:

const handleVisibilityChange = async () => {
  if (wakeLock !== null && document.visibilityState === 'visible') {
    await requestWakeLock();
  }
};

document.addEventListener('visibilitychange', handleVisibilityChange);

सिस्टम के संसाधनों पर अपना असर कम करें

क्या आपको अपने ऐप्लिकेशन में स्क्रीन वेक लॉक का इस्तेमाल करना चाहिए? इसके लिए, आपको यह तरीका ऐप्लिकेशन की ज़रूरतों पर निर्भर करता है. हालांकि, आपको अपने ऐप्लिकेशन के लिए सबसे आसान तरीका इस्तेमाल करना चाहिए, ताकि सिस्टम के संसाधनों पर इसका असर कम से कम पड़े.

अपने ऐप्लिकेशन में स्क्रीन वेक लॉक जोड़ने से पहले, देख लें कि आपके इस्तेमाल के उदाहरण नीचे दिए गए विकल्पों में से किसी एक से हल किए जा सकते हैं या नहीं:

  • अगर आपका ऐप्लिकेशन लंबे समय से डाउनलोड किया जा रहा है, तो बैकग्राउंड फ़ेच का इस्तेमाल करें.
  • अगर आपका ऐप्लिकेशन किसी बाहरी सर्वर से डेटा सिंक कर रहा है, तो बैकग्राउंड सिंक इस्तेमाल करने के बारे में सोचें.

डेमो

स्क्रीन वेक लॉक का डेमो और डेमो सोर्स देखें. ध्यान दें कि टैब या ऐप्लिकेशन स्विच करने पर, स्क्रीन वेक लॉक अपने-आप कैसे रिलीज़ हो जाता है.

ओएस टास्क मैनेजर में स्क्रीन वेक लॉक

अपने ऑपरेटिंग सिस्टम के टास्क मैनेजर का इस्तेमाल करके देखें कि क्या कोई ऐप्लिकेशन आपके कंप्यूटर को स्लीप मोड (कम बैटरी मोड) में जाने से रोक रहा है. नीचे दिए गए वीडियो में macOS Activity Monitor दिखाया गया है. इससे पता चलता है कि Chrome में एक चालू स्क्रीन वेक लॉक है, जो सिस्टम को चालू रखता है.

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

Web Platform Incubator Community Group (WICG) और Chrome टीम Screen वेक लॉक एपीआई के साथ आपके विचारों और अनुभवों के बारे में जानना चाहती है.

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

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

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

क्या आपको Chrome को लागू करने में कोई गड़बड़ी मिली? या क्या इसे लागू करने का तरीका खास जानकारी से अलग है?

  • https://new.crbug.com पर जाकर गड़बड़ी की शिकायत करें. ज़्यादा से ज़्यादा जानकारी दें, गड़बड़ी ठीक करने के लिए आसान निर्देश दें, और कॉम्पोनेंट को Blink>WakeLock पर सेट करें. Glitch का इस्तेमाल करके, तुरंत और आसान तरीकों को शेयर किया जा सकता है.

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

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

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

मददगार लिंक

स्वीकार हैं

अनस्प्लैश पर केट स्टोन मैथेसन की हीरो इमेज. टास्क मैनेजर का वीडियो, हेनरी लिम के सौजन्य से.