通过扫描二维码打开app的实现代码
最近有朋友问小编这样一个问题,先给大家说下项目需求:扫描二维码打开app如果用户没有这个app则提示它跳转。
用网页直接来调用app是不打可能的,必须原生那边先做一些配置。
首先,安卓和苹果的调用方法是不同的。
所以我们需要先判断一下终端。
varu=navigator.userAgent, app=navigator.appVersion; varisAndroid=u.indexOf('Android')>-1||u.indexOf('Linux')>-1;//android终端或者uc浏览器 varisIOS=!!u.match(/\(i[^;]+;(U;)?CPU.+MacOSX/);//ios终端
之后最好是分别跳转到两个不同的页面去做操作,因为苹果需要在头部配置一个app-id<metaname='apple-itunes-app'content='app-id=1115968341'>
下面是苹果的代码
<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <metaname='apple-itunes-app'content='app-id=1115968341'> <title></title> </head> <body> <ahref="https://itunes.apple.com/cn/app/yi-fang-kuai-le-xue-tang/id1115968341?mt=8"id="openApp">点击打开</a> <scripttype="text/javascript"> //苹果 document.getElementById('openApp').onclick=function(e){ //通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 //否则打开a标签的href链接 varifr=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>如果是安卓机的话就简单了
<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <title></title> <metaname="viewport"content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> </head> <body> <ahref="http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile"id="openApp">点击打开</a> <scripttype="text/javascript"> //安卓 ///**/window.location.href="http://a.app.qq.com/o/simple.jsp?pkgname=com.edufound.mobile"; //通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为 //否则打开a标签的href链接 varifr=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里面。
最后是整合了一下的代码。
<!DOCTYPEhtml> <html> <head> <metacharset="UTF-8"> <title></title> </head> <bodyid="body"> <scripttype="text/javascript"> varu=navigator.userAgent, app=navigator.appVersion; varisAndroid=u.indexOf('Android')>-1||u.indexOf('Linux')>-1;//android终端或者uc浏览器 varisIOS=!!u.match(/\(i[^;]+;(U;)?CPU.+MacOSX/);//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"; varifr=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> <metaname="viewport"content="width=device-width"/> </head> <body> <h2><aid="applink1"href="mtcmtc://profile/116201417">Openscheme(mtcmtc)definediniPhonewithparameters</a></h2> <h2><aid="applink2"href="unknown://nowhere">openunknownwithfallbacktoappstore</a></h2> <p><i>OnlyworksoniPhone!</i></p> <scripttype="text/javascript"> //Toavoidthe"protocolnotsupported"alert,failmustopenanotherapp. varappstore="itms://itunes.apple.com/us/app/facebook/id284882215?mt=8&uo=6"; functionapplink(fail){ returnfunction(){ varclickedAt=+newDate; //Duringtestson3g/3gsthistimeoutfiresimmediatelyiflessthan500ms. setTimeout(function(){ //ToavoidfailingonreturntoMobileSafari,ensurefreshness! if(+newDate-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的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!