2011-02-09 13 views
13

का उपयोग करके आईपैड पर स्टैंडबाय हैंडलिंग, आईपैड घटनाओं के बारे में, यह निर्धारित करने के लिए कि आईपैड जागृत स्थिति से एक स्टैंडबाय राज्य में कब बदल रहा है या नहीं?आईपैड पर जावास्क्रिप्ट

मैं जो करना चाहता हूं वह है जब भी आईपैड निष्क्रिय/स्टैंडबाय हो जाता है और पिन फिर से जागने पर पिन के लिए पूछता है तो लॉक किए गए राज्य में अपना मोबाइल-सफारी वेब ऐप डालता है।

उत्तर

31

मैं मानता हूं कि वास्तव में कुछ सिग्नल होना चाहिए जो आप जान सकते हैं कि जब कोई एप्लिकेशन सो जाता है और जब यह जागता है, तो आपको यह पता लगाना चाहिए कि सफारी अप्रत्यक्ष रूप से जागता है।

जब वेबव्यू पृष्ठभूमि में जाता है, सफारी इसे सब कुछ सोने में रखता है। यह किसी भी वीडियो को रोकता है, नेटवर्क अनुरोध को रोकता है, यूआई को अपडेट करना बंद कर देता है और सभी सेट इंटरवल/सेटटाइमआउट ऑपरेशंस को रोक देता है। जेएस स्वयं कभी भी जागरूक नहीं होगा (जहां तक ​​मैं कह सकता हूं) ये बातें कैसे हुईं, लेकिन यह बता सकती है कि यह हुआ है। इसका उपयोग करने का सबसे आसान तरीका नियमित रूप से आवंटित विधि बनाना है और यह देखने के लिए जांचें कि यह अंतिम अपडेट के बाद से अप्रत्याशित रूप से लंबा समय रहा है या नहीं। यदि आप हर 10 सेकंड में कुछ अपडेट करने की उम्मीद करते हैं और यह पांच मिनट हो गया है, तो आप पूरी तरह से सुनिश्चित हो सकते हैं कि डिवाइस जाग गया है। यहाँ एक त्वरित उदाहरण मैं सोचा है:

var intTime = new Date().getTime(); 
    var getTime = function() { 
     var intNow = new Date().getTime(); 
     if (intNow - intTime > 1000) { 
      console.log("I JUST WOKE UP") 
     } 
     intTime = intNow; 
     setTimeout(getTime,500); 
    }; 
    getTime(); 

यह है जब उपयोगकर्ता किसी अन्य टैब से वापस आ गया है की पहचान करेगा, डेवलपर कंसोल को खारिज कर दिया या पृष्ठभूमि से वापस लाया सफारी गया है। मैंने अंतराल को आधे सेकेंड पर सेट किया है; आप इसे किसी भी चीज पर सेट कर सकते हैं, हालांकि मुझे लगता है कि बहुत कम मूल्यों में समवर्ती समस्याएं होंगी और शायद डिवाइस को बैटरी को अनावश्यक रूप से जला देगा।

+0

धन्यवाद एंड्रयू। मेरे पास पहले से ही मेरे वेब ऐप में "निष्क्रिय" टाइमर हैं जो अन्य दिलचस्प सुविधाओं के साथ एक आईएम क्लाइंट के साथ एक वेबमेल है। मैंने यह पता लगाने के लिए एक ऐसा टाइमर इस्तेमाल करने के बारे में सोचा नहीं था कि आईपैड समय के लिए निष्क्रिय है या नहीं। मुझे लगता है कि अब के लिए करना होगा। चीयर्स! – rcarrier

+0

बहुत स्मार्ट, धन्यवाद! – Codebeat

+0

मुझे लगता है कि आप 1 या दो सेकंड की जांच के लिए अंतराल को कम कर सकते हैं क्योंकि यदि आप परावर्तक नहीं हैं तो अधिकांश कार्रवाइयों में कम से कम 1 या 2 सेकंड लगते हैं ;-)। – Codebeat

1

मोबाइल सफारी के पास हार्डवेयर स्तर के इस स्तर तक पहुंच नहीं है। सबसे ज्यादा मुझे लगता है कि यह त्वरक के लिए है।

+0

धन्यवाद डैनियल उपयोग करने के लिए है, मैं सिर्फ इस लिंक भी इस से संबंधित पाया http://stackoverflow.com/questions/4401764/what-event-fires- जब-ए-वेबकिट-वेबएप-समाप्त हो गया है – rcarrier

+0

मैं कल्पना नहीं कर सकता कि ऐप्स (मोबाइल सफारी समेत) को "आसन्न-समाप्ति-चेतावनी" सिग्नल भेजना बहुत कठिन होगा, जिसे आप सुन सकते हैं और तदनुसार योजना बना सकते हैं। मेरा मतलब है कि आईओएस में शायद उस तरह की हार्डवेयर स्टेट जानकारी है ... "बस" इसे एप्लिकेशन लेयर पर दबाकर * करना चाहिए? – rcarrier

+0

@rcarrier आप इस तरह के सिग्नल के साथ क्या करेंगे? यदि आप आसन्न समाप्ति प्राप्त करने के बाद कोड निष्पादित करते हैं, तो आप देरी या बदतर, नींद को रोक देंगे। अपने मोबाइल डिवाइस को स्टैंड-बाय और डिलीट करने से रोकने के लिए "खराब" वेब एप्लिकेशन की कल्पना करें। यदि आप कोड निष्पादित नहीं करते हैं, तो सिग्नल स्वयं बेकार है। – janesconference

0

एक संभव समाधान है कि मेरे लिए काम किया

$(window).on('blur', function(){}); 
संबंधित मुद्दे