H5唤醒APP

Posted on 2017-07-31 17:10  powerixao  阅读(329)  评论(0)    收藏  举报
<a href="APP下载地址">下载或打开APP</a>
<script>
$('a').click(function() {
    var ifr = document.createElement('iframe');
    ifr.src = '自定义 URL scheme';
    ifr.style.display = 'none';
    document.body.appendChild(ifr);
    setTimeout(function(){
        document.body.removeChild(ifr);
    }, 3000);
});
</script>

过程是这样:点击 a 标签时,首先会尝试打开URL scheme,如果成功,就唤起APP;如果失败,则跳转到 href 属性,即下载页。

是否成功打开APP检测及回调

functionopenApp(openUrl, appUrl, action, callback) {//检查app是否打开functioncheckOpen(cb){var _clickTime =+(newDate());functioncheck(elsTime) {if ( elsTime >3000||document.hidden||document.webkitHidden) {cb(1);}else{cb(0);}}//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束var _count =0, intHandle; intHandle =setInterval(function(){ _count++;var elsTime =+(newDate()) - _clickTime;if (_count>=100|| elsTime >3000 ) {clearInterval(intHandle);check(elsTime);}},20);}//在iframe 中打开APPvar ifr =document.createElement('iframe');ifr.src= openUrl;ifr.style.display='none';if (callback) {checkOpen(function(opened){ callback &&callback(opened);});}document.body.appendChild(ifr);setTimeout(function() {document.body.removeChild(ifr);},2000);}

 

 

 

<a id="call-app" href="javascript:;" > Start or Download </a><br/><br/><input id="download-app" type="hidden" name="storeurl" value="http://jd.com/8JZ5OO"><script> (function(){ var ua = navigator.userAgent.toLowerCase(); var t; var config = { /*scheme:必须*/ scheme_IOS: 'schemedemo://', scheme_Adr: 'schemedemo://?name=google&page=1', download_url: document.getElementById('download-app').value, timeout: 600 }; function openclient() { var startTime = Date.now(); var ifr = document.createElement('iframe'); ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr; ifr.style.display = 'none'; document.body.appendChild(ifr); var t = setTimeout(function() { var endTime = Date.now(); if (!startTime || endTime - startTime < config.timeout + 200) { window.location = config.download_url; } else { } }, config.timeout); window.onblur = function() { clearTimeout(t); } } window.addEventListener("DOMContentLoaded", function(){ document.getElementById("call-app").addEventListener('click', openclient, false); }, false); })() </script>

 

functionopenApp(openUrl, appUrl, action, callback) {//检查app是否打开functioncheckOpen(cb){var _clickTime =+(newDate());functioncheck(elsTime) {if ( elsTime >3000||document.hidden||document.webkitHidden) {cb(1);}else{cb(0);}}//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束var _count =0, intHandle; intHandle =setInterval(function(){ _count++;var elsTime =+(newDate()) - _clickTime;if (_count>=100|| elsTime >3000 ) {clearInterval(intHandle);check(elsTime);}},20);}//在iframe 中打开APPvar ifr =document.createElement('iframe');ifr.src= openUrl;ifr.style.display='none';if (callback) {checkOpen(function(opened){ callback &&callback(opened);});}document.body.appendChild(ifr);setTimeout(function() {document.body.removeChild(ifr);},2000);}

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3