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

Screen Wake Lock API की मदद से, किसी ऐप्लिकेशन के चालू रहने पर, डिवाइस की स्क्रीन की रोशनी कम या बंद होने से रोका जा सकता है.

Screen Wake Lock API क्या है?

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

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

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

Screen Wake Lock API के इस्तेमाल के सुझाए गए उदाहरण

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

हालांकि, इसका इस्तेमाल कई अन्य तरीकों से भी किया जा सकता है:

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

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

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

Screen Wake Lock API का इस्तेमाल करना

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

फ़िलहाल, Screen Wake Lock API सिर्फ़ एक तरह का वेक लॉक उपलब्ध कराता है: 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);

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

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

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

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

डेमो

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

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

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

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

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

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

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

  • Screen Wake Lock API के GitHub रिपॉज़िटरी पर, खास जानकारी से जुड़ी कोई समस्या दर्ज करें या किसी मौजूदा समस्या में अपने सुझाव, राय या टिप्पणी जोड़ें.

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

क्या आपको Chrome में इस सुविधा को लागू करने में कोई गड़बड़ी मिली? या क्या इसे लागू करने का तरीका, स्पेसिफ़िकेशन से अलग है?

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

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

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

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

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

आभार

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