微信公众号H5下载APP

微信H5默认是不允许下载apk,或者文件的,如果我们开发的app,apk安装文件放到项目指定路径,用户扫码下载的话,用户直接使用浏览器可以下载,但是大部分用户直接使用微信扫码了,这样情况apk被直接被微信拦截,无法下载,除非把app上架到应用市场,如腾讯的应用宝,微信扫描应用宝的app下载二维码,但是上架app是非常麻烦的,还需要费用。

微信下载安卓apk便捷有效的解决方案

问题: 微信H5默认是不允许下载apk或者文件的
方案:下载链接不要直接指向apk路径,开发一个前置的服务,用户扫描后从HttpServletRequest中判定来源,主要获取是否是微信浏览器这个数据

  1. 如果是微信的话显示一个提示,引导用户点击右上角在浏览器打开该链接。
  2. 如果是浏览器扫码,则在指向到apk下载路径。

安卓app,ios app多码合一方案,且支持微信,浏览器扫码

问题:app下载时,我们很多情况是看到两个二维码,一个是给安卓手机用户扫码的,一个是给苹果手机用户扫描下载的,很别扭,使用一个二维码会方便很多.

方案:下载链接不要直接指向apk路径或者 该APP苹果的应用商店路径,开发一个前置的服务,用户扫描后从HttpServletRequest中判定来源,主要获取是否是微信浏览器,手机操作系统这两个数据

  1. 如果是微信并且手机是安卓操作系统的话显示一个提示,引导用户点击右上角在浏览器打开该链接。
  2. 如果是浏览器扫码且手机操作系统为安卓,则在指向到apk下载路径。
  3. 如果是苹果操作系统扫码,则不管是微信还是浏览器扫码都直接链接到苹果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点击报告下载后,提示如下,安卓和苹果系统都是提示在浏览器打开
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐