मैं मानता हूं कि वास्तव में कुछ सिग्नल होना चाहिए जो आप जान सकते हैं कि जब कोई एप्लिकेशन सो जाता है और जब यह जागता है, तो आपको यह पता लगाना चाहिए कि सफारी अप्रत्यक्ष रूप से जागता है।
जब वेबव्यू पृष्ठभूमि में जाता है, सफारी इसे सब कुछ सोने में रखता है। यह किसी भी वीडियो को रोकता है, नेटवर्क अनुरोध को रोकता है, यूआई को अपडेट करना बंद कर देता है और सभी सेट इंटरवल/सेटटाइमआउट ऑपरेशंस को रोक देता है। जेएस स्वयं कभी भी जागरूक नहीं होगा (जहां तक मैं कह सकता हूं) ये बातें कैसे हुईं, लेकिन यह बता सकती है कि यह हुआ है। इसका उपयोग करने का सबसे आसान तरीका नियमित रूप से आवंटित विधि बनाना है और यह देखने के लिए जांचें कि यह अंतिम अपडेट के बाद से अप्रत्याशित रूप से लंबा समय रहा है या नहीं। यदि आप हर 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();
यह है जब उपयोगकर्ता किसी अन्य टैब से वापस आ गया है की पहचान करेगा, डेवलपर कंसोल को खारिज कर दिया या पृष्ठभूमि से वापस लाया सफारी गया है। मैंने अंतराल को आधे सेकेंड पर सेट किया है; आप इसे किसी भी चीज पर सेट कर सकते हैं, हालांकि मुझे लगता है कि बहुत कम मूल्यों में समवर्ती समस्याएं होंगी और शायद डिवाइस को बैटरी को अनावश्यक रूप से जला देगा।
धन्यवाद एंड्रयू। मेरे पास पहले से ही मेरे वेब ऐप में "निष्क्रिय" टाइमर हैं जो अन्य दिलचस्प सुविधाओं के साथ एक आईएम क्लाइंट के साथ एक वेबमेल है। मैंने यह पता लगाने के लिए एक ऐसा टाइमर इस्तेमाल करने के बारे में सोचा नहीं था कि आईपैड समय के लिए निष्क्रिय है या नहीं। मुझे लगता है कि अब के लिए करना होगा। चीयर्स! – rcarrier
बहुत स्मार्ट, धन्यवाद! – Codebeat
मुझे लगता है कि आप 1 या दो सेकंड की जांच के लिए अंतराल को कम कर सकते हैं क्योंकि यदि आप परावर्तक नहीं हैं तो अधिकांश कार्रवाइयों में कम से कम 1 या 2 सेकंड लगते हैं ;-)। – Codebeat