@ एटलैर ने इस जवाब में कहा कि कभी-कभी उपयोगकर्ता ऐप खोलने के बाद ब्राउज़र में वापस आ जाएंगे। उस उत्तर के लिए एक टिप्पणीकार ने संकेत दिया कि उपयोग किए गए समय मूल्यों को iOS संस्करण के आधार पर बदलना होगा। जब हमारी टीम को इससे निपटना था, तो हमने पाया कि शुरुआती टाइमआउट के लिए समय के मान और यह बताना कि क्या हम ब्राउज़र में वापस आ गए हैं, को ट्यून करना होगा, और अक्सर सभी उपयोगकर्ताओं और उपकरणों के लिए काम नहीं किया।
यह निर्धारित करने के लिए कि क्या हम ब्राउज़र में वापस आ गए हैं, यह निर्धारित करने के लिए एक मनमाना समय अंतर सीमा का उपयोग करने के बजाय, यह "पेजहाइड" और "पेजशो" घटनाओं का पता लगाने के लिए समझ में आया।
मैंने निम्नलिखित वेब पेज को विकसित करने में मदद करने के लिए विकसित किया कि क्या चल रहा था। यह HTML डायग्नोस्टिक्स को घटनाओं को प्रकट करता है, मुख्य रूप से क्योंकि कंसोल लॉगिंग, अलर्ट या वेब इंस्पेक्टर, jsfiddle.net आदि जैसी तकनीकों का उपयोग करते हुए इस कार्य प्रवाह में सभी अपनी कमियां थीं। समय सीमा का उपयोग करने के बजाय, जावास्क्रिप्ट "पेजहाइड" और "पेजशो" घटनाओं की संख्या को गिनता है कि क्या वे हुए हैं। और मैंने पाया कि सबसे मजबूत रणनीति 1000 के शुरुआती समय का उपयोग करना था (बजाय 25, 50, या 100 की सूचना दी गई / दूसरों के लिए सुझाव दिया गया)।
यह एक स्थानीय सर्वर पर पेश किया जा सकता है, जैसे कि python -m SimpleHTTPServer
और आईओएस सफारी पर देखा गया।
इसके साथ खेलने के लिए, "या तो स्थापित ऐप खोलें" या "ऐप इंस्टॉल नहीं" लिंक दबाएं। ये लिंक क्रमशः मैप्स ऐप या ऐप स्टोर को खोलने के लिए होना चाहिए। फिर आप घटनाओं के अनुक्रम और समय को देखने के लिए सफारी लौट सकते हैं।
(नोट: यह केवल सफारी के लिए काम करेगा। अन्य ब्राउज़रों के लिए (जैसे क्रोम) आपको पेजहाइड / शो-समतुल्य घटनाओं के लिए हैंडलर स्थापित करना होगा)।
अपडेट: जैसा कि @ मिक्को ने टिप्पणियों में बताया है, हम जिस पेजशो / पेजहाइड घटनाओं का उपयोग कर रहे हैं, वह जाहिर तौर पर iOS8 में समर्थित नहीं है।
<html>
<head>
</head>
<body>
<a href="maps://" onclick="clickHandler()">Open an installed app</a>
<br/><br/>
<a href="xmapsx://" onclick="clickHandler()">App not installed</a>
<br/>
<script>
var hideShowCount = 0 ;
window.addEventListener("pagehide", function() {
hideShowCount++ ;
showEventTime('pagehide') ;
});
window.addEventListener("pageshow", function() {
hideShowCount++ ;
showEventTime('pageshow') ;
});
function clickHandler(){
var hideShowCountAtClick = hideShowCount ;
showEventTime('click') ;
setTimeout(function () {
showEventTime('timeout function '+(hideShowCount-hideShowCountAtClick)+' hide/show events') ;
if (hideShowCount == hideShowCountAtClick){
// app is not installed, go to App Store
window.location = 'http://itunes.apple.com/app' ;
}
}, 1000);
}
function currentTime()
{
return Date.now()/1000 ;
}
function showEventTime(event){
var time = currentTime() ;
document.body.appendChild(document.createElement('br'));
document.body.appendChild(document.createTextNode(time+' '+event));
}
</script>
</body>
</html>