通过扫描二维码下载APP已成为一个非常方便的方式,微信也成为扫描二维码重要的工具,但是扫描后微信浏览器会对APK和appStore的链接进行屏蔽,导致用户无法正常下载。本文提供两个迂回的解决方案:1.使用腾讯应用宝;2.提示用户使用浏览器打开。
第1种方法不用介绍了,把APP提交给腾讯应用宝即可,需要等待腾讯的审批,审批条件比较苛刻,腾讯采用分级审批方式,如果你是高级开发者,可以不审批先上线,如果是低级开发者,那么辛苦地等待吧。通过之后,会生成一个下载页面,该页面同时还能够跳转到appStore,前提是先录入appStore的相关信息。
第2种方法思路:
制作一个app下载页 app-index.html,逻辑如下:
如果,是weixin浏览器:
如果,是iphone 或者 ipad:
则显示“使用Safari打开”
否则
显示“使用浏览器打开”
否则:
显示下载页面
测试样例,扫描下面二维码:
效果如下:
下面将js实现部分代码列举,也可通过查看源代码了解细节。
function is_weixin(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") { return true; } else { return false; } } var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { trident: u.indexOf('Trident') > -1, presto: u.indexOf('Presto') > -1, webKit: u.indexOf('AppleWebKit') > -1, gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, mobile: !!u.match(/AppleWebKit.*Mobile.*/), ios: !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/), android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, iPhone: u.indexOf('iPhone') > -1 , iPad: u.indexOf('iPad') > -1, webApp: u.indexOf('Safari') == -1 } }(), language:(navigator.browserLanguage || navigator.language).toLowerCase() }; function init(){ if(is_weixin()){ //weixin为提示使用浏览器打开的div document.getElementById("weixin").style.display="block"; if(browser.versions.ios || browser.versions.iPhone || browser.versions.iPad){ document.getElementById("step2").innerHTML="2. 在Safari中打开"; }else{ document.getElementById("step2").innerHTML="2. 在浏览器中打开"; } }else{ //下载页div document.getElementById("main").style.display="block"; } } init();