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

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 वेक लॉक एपीआई का इस्तेमाल करना

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

फ़िलहाल, 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 के बारे में आपके विचार और अनुभव जानना चाहती है.

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

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

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

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

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

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

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

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

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

धन्यवाद

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