JavaScript实现扫二维码跳转

时间:2016-11-14417举报小编:youjiejie

    JavaScript实现扫二维码跳转,怎么实现呢?

    用网页直接来调用app是不打可能的,必须原生那边先做一些配置。

    首先,安卓和苹果的调用方法是不同的。

    所以我们需要先判断一下终端。

    var u = navigator.userAgent,
    app = navigator.appVersion;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
    var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端

    之后最好是分别跳转到两个不同的页面去做操作,因为苹果需要在头部配置一个app-id<meta name='apple-itunes-app' content='app-id=1115968341'>

    下面是苹果的代码

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <meta name='apple-itunes-app' content='app-id=1115968341'>
    <title></title>
    </head>
    <body>
    <a href="https://itunes.apple.com/cn/app/yi-fang-kuai-le-xue-tang/id1115968341?mt=8" id="openApp">点击打开</a>
    <script type="text/javascript"> 
    //苹果
    document.getElementById('openApp').onclick = function(e){ 
    // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 
    // 否则打开a标签的href链接 
    var ifr = document.createElement('iframe'); 
    ifr.src = 'iosefunbox://'; 
    ifr.style.display = 'none'; 
    document.body.appendChild(ifr); 
    window.setTimeout(function(){ 
    document.body.removeChild(ifr); 
    },3000) 
    };
    </script>
    </body>
    </html>

    这里的ifr.src就是你去打开app的协议路径,安卓和苹果是不一样的。<br><br><br>如果是安卓机的话就简单了

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
    </head>
    <body>
    <a href="http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile" id="openApp">点击打开</a>
    <script type="text/javascript">
    //安卓
    // /**/window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile";
    // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 
    // 否则打开a标签的href链接 
    var ifr = document.createElement('iframe'); 
    ifr.src = 'efunbox://efunbox.app/efunbox/open'; 
    ifr.style.display = 'none'; 
    document.body.appendChild(ifr); 
    window.setTimeout(function(){ 
    document.body.removeChild(ifr); 
    },3000);
    </script>
    </body>
    </html>

    这是我们原先的需求,后来变了,说苹果直接跳转到appstore里面就好了,不用直接打开,安卓的话需要直接打开。

    这样我就直接把它们集合在一个网页就行。

    我上面的a链接是直接跳转到腾讯应用宝里面。

    用网页扫描访问的话是没问题的,

    但是我就感觉会出事,后来拿微信扫一扫就蒙逼了。安卓只会打开a链接,跳转不进app,因为被微信拦截掉了,苹果也一样,解决的方案只能是点击右上角,提示用户在浏览器打开就没问题。这种方法是无奈之举,但后来针对苹果机找到了一个解决它的方案就是,a链接的跳转直接跳腾讯应用宝上架的链接,然后微信内部会处理帮你自动跳转到appstore里面。

    最后是整合了一下的代码。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body id="body">
    <script type="text/javascript">
    var u = navigator.userAgent,
    app = navigator.appVersion;
    var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
    var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
    if(isIOS){
    window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile"; 
    }
    if(isAndroid){
    alert("请点击右上角在浏览器打开");
    window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile";
    var ifr = document.createElement('iframe'); 
    ifr.src = 'efunbox://efunbox.app/efunbox/open'; 
    ifr.style.display = 'none'; 
    document.body.appendChild(ifr); 
    window.setTimeout(function(){ 
    document.body.removeChild(ifr); 
    },3000);
    }
    </script>
    </body>
    </html>

    补充:

    扫描二维码跳转app

    1、判断是否安装了app

    <html> 
    <head> 
    <meta name="viewport" content="width=device-width" /> 
    </head> 
    <body> 
    <h2><a id="applink1" href="mtcmtc://profile/116201417">Open scheme(mtcmtc) defined in iPhone with parameters </a></h2> 
    <h2><a id="applink2" href="unknown://nowhere">open unknown with fallback to appstore</a></h2> 
    <p><i>Only works on iPhone!</i></p> 
    <script type="text/javascript"> 
    // To avoid the "protocol not supported" alert, fail must open another app.
    var appstore = "itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6";
    function applink(fail){
    return function(){
    var clickedAt = +new Date;
    // During tests on 3g/3gs this timeout fires immediately if less than 500ms.
    setTimeout(function(){
    // To avoid failing on return to MobileSafari, ensure freshness!
    if (+new Date - clickedAt < 2000){
    window.location = fail;
    }
    }, 500); 
    };
    }
    document.getElementById("applink1").onclick = applink(appstore);
    document.getElementById("applink2").onclick = applink(appstore);
    </script> 
    </body> 
    </html>

    2、打开项目工程target里面的schemurl追加://

    以上所述是小编给大家介绍的通过扫描二维码打开app的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对未来软件园的支持!