Fallback redirect if native app not opened

by Piotr Tomaszewski

HTML

<pre id='log'>
>

</pre>

JavaScript

var timestamp 			  = new Date().getTime();
    var timerDelay 				= 5000;
    var processingBuffer  = 2000;
    
    var redirect = function(url) {
      //window.location = url;
      log('ts: ' + timestamp + '; redirecting to: ' + url);
    }
    var isPageHidden = function() {
        var browserSpecificProps = {hidden:1, mozHidden:1, msHidden:1, webkitHidden:1};
        for (var p in browserSpecificProps) {
        	if(typeof document[p] !== "undefined"){
          	return document[p];
          }
        }
        return false; // actually inconclusive, assuming not
    }
    var elapsedMoreTimeThanTimerSet = function(){
    	var elapsed = new Date().getTime() - timestamp;
      log('elapsed: ' + elapsed);
      return timerDelay + processingBuffer < elapsed;
    }
    var redirectToFallbackIfBrowserStillActive = function() {
      var elapsedMore = elapsedMoreTimeThanTimerSet();
      log('hidden:' + isPageHidden() +'; time: '+ elapsedMore);
      if (isPageHidden() || elapsedMore) {
        log('not redirecting');
      }else{
      	redirect('appStoreUrl');
      }
    }
    var log = function(msg){
    	document.getElementById('log').innerHTML += msg + "<br>";
    }
		
    setTimeout(redirectToFallbackIfBrowserStillActive, timerDelay);
    redirect('nativeApp://');