微信扫码下载APP,苹果,安卓多码合一,微信下载pdf报告,文件解决方案
微信扫码下载APP,苹果,安卓多码合一,微信下载pdf报告,文件
微信公众号H5下载APP
微信H5默认是不允许下载apk,或者文件的,如果我们开发的app,apk安装文件放到项目指定路径,用户扫码下载的话,用户直接使用浏览器可以下载,但是大部分用户直接使用微信扫码了,这样情况apk被直接被微信拦截,无法下载,除非把app上架到应用市场,如腾讯的应用宝,微信扫描应用宝的app下载二维码,但是上架app是非常麻烦的,还需要费用。
微信下载安卓apk便捷有效的解决方案
问题:
微信H5默认是不允许下载apk或者文件的
方案:
下载链接不要直接指向apk路径,开发一个前置的服务,用户扫描后从HttpServletRequest中判定来源,主要获取是否是微信浏览器这个数据
- 如果是微信的话显示一个提示,引导用户点击右上角在浏览器打开该链接。
- 如果是浏览器扫码,则在指向到apk下载路径。
安卓app,ios app多码合一方案,且支持微信,浏览器扫码
问题:
app下载时,我们很多情况是看到两个二维码,一个是给安卓手机用户扫码的,一个是给苹果手机用户扫描下载的,很别扭,使用一个二维码会方便很多.
方案:
下载链接不要直接指向apk路径或者 该APP苹果的应用商店路径,开发一个前置的服务,用户扫描后从HttpServletRequest中判定来源,主要获取是否是微信浏览器,手机操作系统这两个数据
- 如果是微信并且手机是安卓操作系统的话显示一个提示,引导用户点击右上角在浏览器打开该链接。
- 如果是浏览器扫码且手机操作系统为安卓,则在指向到apk下载路径。
- 如果是苹果操作系统扫码,则不管是微信还是浏览器扫码都直接链接到苹果appstore该APP的下载地址。
微信客户端扫码,且手机是安卓系统提示如下,我是直接网上找到一张有文字提示的图片
关键代码
controller代码,用这个url生成二维码,用户扫码后从request获取是否微信客户端,手机操作系统
String userAgent = request.getHeader("user-agent").toLowerCase();
String isWx="0";
if(userAgent.indexOf("micromessenger")>-1){//微信客户端
isWx="1";
}
module.put("isWx",isWx);
String isIPhone="0";
// mozilla/5.0 (iphone; cpu iphone os 13_3_1 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e148 micromessenger/7.0.12(0x17000c2d) nettype/wifi language/zh_cn
if(userAgent.indexOf("iphone")>-1){
isIPhone="1";
}
module.put("isIPhone",isIPhone);
logger.info(" isWx:"+isWx+" isIPhone:"+isIPhone);
WEB端处理,后台把是否微信客户端,手机操作系统返回给前端,前端做出不同的处理
<script>
$(window).on("load",function(){
var winHeight = $(window).height();
var isWx=$("#browerInput").val();
var isIPhone=$("#osInput").val();
if("1"==isIPhone){
//苹果手机
window.location.href="https://itunes.apple.com/cn/app/idxxxxxx?mt=8";
return;
}
//安卓手机
if("1"==isWx){
$(".weixin-tip").css("height",winHeight);
$(".weixin-tip").show();
}else{
//直接转向下载地址
window.location.href="download/xxxx.apk";
}
})
</script>
微信下载pdf报告文件方式(安卓,苹果系统通用)
另外微信下载文件原理和这个一样,比如微信公众号的H5可以预览PDF报告,客户提出需求允许用户下载pdf,因为微信H5不能下载文件,之前想到的是手机短信发送下载地址,邮箱发送下载地址给客户,这样比较麻烦,还需要用户输入接收下载地址的手机或者邮箱。
解决方案也是用户点击下载pdf先请求controller,request获取到是微信客户端后提示在浏览器打开该链接,用户根据提示在点击在浏览器打开,controller在获取到是浏览器打开的,就链接到pdf文件下载地址。
需要注意的是PDF下载本来是需要用户登录的,在浏览器下载需要做好安全机制,我是通过token认证的。
关键代码
前置controller代码和上面的一样,前端代码也基本没区别
jQuery(document).ready(function() {
var winHeight = $(window).height();
var isWx=$("#browerInput").val();
//var isIPhone=$("#osInput").val();
var tjbh=$("#tjbhInput").val();
var tjlx=$("#tjlxInput").val();
var reportToken=$("#reportTokenInput").val();
//安卓手机
if("1"==isWx){
$(".weixin-tip").css("height",winHeight);
$(".weixin-tip").show();
}else{
$("#downTextDiv").html("报告单下载成功,请妥善保管您的个人体检报告,谢谢");
$("#backId").hide();
//直接转向下载地址
window.location.href="xxxController_bgcx_downloadPdf.do?reportToken="+reportToken;
}
});
微信H5点击报告下载后,提示如下,安卓和苹果系统都是提示在浏览器打开
更多推荐
所有评论(0)