javascript - आईओएस 8 बग-ओनअपडेट, जब डिवाइस नींद से लौटता है तब कभी भी फिर से फोन नहीं किया जाता




जियो फोन की कीमत 2018 (4)

जब कोई आईओएस 8 डिवाइस एक वेब अनुप्रयोग चलाता है (यानी होम स्क्रीन पर शॉर्टकट से लॉन्च किया जाता है) यह नींद की स्थिति से लौटता है तो सभी अतुल्यकालिक वेब अनुरोधों को ऑनअपडेट रीडी कॉलबैक ट्रिगर करने में विफल हो जाते हैं।

समस्या को पुन: उत्पन्न करने के लिए काफी आसान है - बस नीचे किसी भी वेब सर्वर पर दो कोड फ़ाइलें डाल कर इसे एक कोशिश दें

इस मुद्दे में किसी और को चलाया गया है? यदि ऐसा है तो क्या कोई उपाय है?

आईओएस 8 में इस बग को ध्यान आकर्षित करने की कोशिश करने के लिए मैं इसे पोस्ट कर रहा हूं, जिसने मेरे सभी वेब अनुप्रयोगों को अनिर्धारित रूप से बर्बाद कर दिया है - हमें आईओएस 7 से परे नवीनीकृत करने की अनुशंसा नहीं हुई है। और हाँ, मैंने इस समस्या को Apple बग रिपोर्टर, लेकिन मुझे लगता है कि कोई भी इन्हें नहीं देख रहा है क्योंकि यह एक लंबा समय रहा है।

app.manifest

CACHE MANIFEST
# 2014-09-24 - Test

CACHE:
default.html

default.html

<!DOCTYPE html>
<html manifest="app.manifest">
<head>
  <title>Test Harness</title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"/>
  <meta name="HandheldFriendly" content="true" />
  <meta name="apple-mobile-web-app-capable" content="yes" />
  <meta name="apple-mobile-web-app-status-bar-style" content="black" />
  <script language="javascript" type="text/javascript">
    var Test = new function () {
      var _GetEnd = function (oResult) {
        var sResult = ': ' +
          ((oResult.Value === true)
            ? 'Success'
            : 'Failure<br>' + oResult.Reason) +
          '<br>';

        var oLog = document.getElementById('idLog');
        oLog.innerHTML = (new Date()) + sResult + oLog.innerHTML

        setTimeout(_GetBegin, 1000);
      };

      var _GetBegin = function () {
        var sURL = 'app.manifest';
        var hAsyncCallback = _GetEnd;

        try {
          var oRequest = new XMLHttpRequest();
          oRequest.onreadystatechange =
            function () {
              if (oRequest.readyState != 4) return;
              if (oRequest.status != 200) {
                hAsyncCallback({ Value: false, Reason: oRequest.responseText });
              } else {
                hAsyncCallback({ Value: true, Reason: null });
              }
            };
          oRequest.open('GET', sURL, true);
          oRequest.send(null);
        } catch (e) {
          alert('Critical Error: ' + e.message );
        }
      };

      this.Start = function () { _GetBegin(); }
    };
  </script>
</head>
<body onload="Test.Start();">
  <ol>
    <li>Put both app.manifest and default.html on a web server.</li>
    <li>Make sure this page is being launched from the Home screen as a web application.</li>
    <li>Press the sleep button while it is running.</li>
    <li>Press the wake button and unlock the phone to get back to this screen.</li>
    <li>Under iOS7x the page continues, under iOS8 the onreadystatechange never gets called again.</li>
  </ol>
  <div id="idLog"></div>
</body>
</html>

https://code.i-harness.com


मैं भी एक ही मुद्दा देख रहा हूं, हालांकि मेरा उदाहरण बहुत सरल है बस के साथ एक webclip आवेदन है

<script> window.setInterval(function(){ console.log("Johnny Five Alive! : " + new Date()); },1000); </script>

पेज पर। नींद की जागने के बाद सांत्वना का निरीक्षण करना, कोई और कंसोल आउटपुट नहीं। यह IOS7 पर ठीक काम करता है (मेरे वास्तविक आवेदन एक जटिल कोणीय जेएस बात है, मैं सिर्फ इस मुद्दे को उबला हुआ है) क्या आपने अपनी बग रिपोर्ट पर कोई प्रतिक्रिया व्यक्त की है?


अजीब, ऐप्पल ने बस मेरा बग बंद कर दिया और उसी बग संख्या को भेजा। इसके अलावा एक वेब ऐप पर मुझे स्क्रीन लॉक के बाद काम करने से रोकने के लिए सीएसएस 3 संक्रमण मिल गया:

इंजीनियरिंग ने निर्धारित किया है कि आपकी बग रिपोर्ट (18556061) एक अन्य समस्या (1804238 9) का डुप्लिकेट है और बंद हो जाएगी

मेरी रिपोर्ट:

यदि आप होम स्क्रीन पर एक HTML ऐप जोड़ते हैं और इसे खोलते हैं, तो सभी CSS3 के संक्रमण ठीक से काम करते हैं। एप को बंद करने और स्क्रीन को दबाए बिना ट्रांज़िशन को रोकना प्रतीत होता है और यूआई को फ्रीज दिखाना पड़ सकता है। उदाहरण के लिए यदि एक पूर्ण ओवरले ट्रिगर किया गया है (अस्पष्टता: 0 से अस्पष्टता: 1) यह अदृश्य बना रहता है जिससे ऐप काम नहीं करता


आईओएस 8.1.1 का इंस्टॉलेशन करना


अजाक्स अनुरोध, टाइमर फ़ंक्शंस और वेबकिटअनमेशन IOS8 पर लॉक स्क्रीन के बाद टूटा हुआ है।

अजाक्स और टाइमर फ़ंक्शंस के लिए, हम इस समाधान का उपयोग हमारे सिस्टम में कर रहे हैं: स्क्रीन अनलॉक के बाद iOS8 वेब ऐप पर जावास्क्रिप्ट टाइमर कैसे शुरू करें? (टिप्पणी में gitHub के लिए लिंक)।

यह वास्तव में प्रश्न का हिस्सा नहीं है, लेकिन मैं CSS3 के एनिमेशन और घटनाओं के साथ हमारे समाधान साझा करना चाहूंगा, क्योंकि यह भविष्य में किसी को मदद कर सकता है।

वेबकिटअनिमेशन के लिए, हमने पाया कि एनीमेशन के साथ तत्व को फिर से तैयार करना, या अधिक तीव्रता से body एनिमेशन और उन पर लागू होने वाले ईवेंट को पुनरारंभ करेगा (उदाहरण के लिए वेबकिट एनीमेशन एन्ड, जो कि जेक्जरी-मोबाइल द्वारा भारी उपयोग किया जाता है)।

इसलिए हमारा कोड कुछ ऐसा देता है:

    document.body.style.display='none';
    setTimeout( function() { document.body.style.display = 'block'; }, 1);

आपको दूसरे वक्तव्य पर setTimeout फ़ंक्शन की आवश्यकता हो सकती है या नहीं। सबसे दिलचस्प बात यह है कि एक बार इसे दोबारा बना दिया गया है, फिर भी वह फिर से जमे हुए नहीं होगा, इसके बावजूद कितने लॉक स्क्रीन आ जाएंगे ...







sleep