微信内置浏览器不支持下载APK文件

今天做项目,遇到在微信公众号里面打开一个页面,然后页面上有需要下载apk安装包的功能,pc网页,手机浏览器都调试没问题了,然后放到微信里面就不行咯,打开之后就是空白的,也没有任何提示,查资料了解到:因为腾讯为了自身利益,屏蔽了其他app直接在微信中下载,真不真实不知道。。。。

然后找了一些解决方案,以下这个方案,亲自测试是可以正常使用的,文件使用php编写

  1 <?php
  2 if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
  3     //其实没太弄明白,为什么要加这2句,就可以从微信内置浏览器跳出去到手机浏览器 2021-03-30
  4     header("Content-Disposition: attachment; filename=\"load.doc\"");
  5     header("Content-Type: application/vnd.ms-word;charset=utf-8");
  6 }
  7 $data = isset($_GET['data']) && $_GET['data'] ? $_GET['data'] : '';
  8 $name = isset($_GET['name']) && $_GET['name'] ? $_GET['name'] : '';
  9 $downloadUrl = $data ? base64_decode($data) : '';
 10 ?>
 11 <!DOCTYPE html>
 12 <html>
 13 <head>
 14     <meta charset="UTF-8">
 15     <title><?=$name?></title>
 16     <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport"/>
 17     <meta content="yes" name="apple-mobile-web-app-capable"/>
 18     <meta content="black" name="apple-mobile-web-app-status-bar-style"/>
 19     <meta name="format-detection" content="telephone=no"/>
 20     <style>
 21         body,html{width:100%;height:100%}
 22         *{margin:0;padding:0}
 23         body{background-color:#fff}
 24         .top-bar-guidance{font-size:15px;color:#fff;height:40%;line-height:1.8;padding-left:20px;padding-top:20px;background:url(/img/wx_right_browser.png) center top/contain no-repeat}
 25         .top-bar-guidance .icon-safari{width:25px;height:25px;vertical-align:middle;margin:0 .2em}
 26         .app-download-btn{display:block;width:214px;height:40px;line-height:40px;margin:18px auto 0 auto;text-align:center;font-size:18px;color:#2466f4;border-radius:20px;border:.5px #2466f4 solid;text-decoration:none}
 27     </style>
 28 </head>
 29 <body>
 30 <div class="top-bar-guidance">
 31     <p>
 32         点击右上角选择在浏览器打开
 33     </p>
 34     <p>
 35         可以继续下载哦~
 36     </p>
 37 </div>
 38 
 39 <a class="app-download-btn" id="BtnClick" href="javascript:;"> 点此下载 </a>
 40 
 41 <script>
 42 
 43     var url = '<?=$downloadUrl?>';//更改需要跳转的地址
 44 
 45     document.querySelector('body').addEventListener('touchmove', function (event) {
 46 
 47         event.preventDefault();
 48 
 49     });
 50 
 51     window.mobileUtil = (function(win, doc) {
 52 
 53         var UA = navigator.userAgent,
 54 
 55             isAndroid = /android|adr/gi.test(UA),
 56 
 57             isIOS = /iphone|ipod|ipad/gi.test(UA) && !isAndroid,
 58 
 59             isBlackBerry = /BlackBerry/i.test(UA),
 60 
 61             isWindowPhone = /IEMobile/i.test(UA),
 62 
 63             isMobile = isAndroid || isIOS || isBlackBerry || isWindowPhone;
 64 
 65         return {
 66 
 67             isAndroid: isAndroid,
 68 
 69             isIOS: isIOS,
 70 
 71             isMobile: isMobile,
 72 
 73             isWeixin: /MicroMessenger/gi.test(UA),
 74 
 75             isQQ: /QQ/gi.test(UA)
 76 
 77         };
 78 
 79     })(window, document);
 80 
 81     if(mobileUtil.isWeixin){
 82 
 83         if(mobileUtil.isIOS){
 84 
 85             url = "https://t.asczwa.com/taobao?backurl=" + encodeURIComponent(url);
 86 
 87             document.getElementById('BtnClick').href=url;
 88 
 89         }else if(mobileUtil.isAndroid){
 90 
 91             document.getElementById('BtnClick').href=url;
 92 
 93             var iframe = document.createElement("iframe");
 94 
 95             iframe.style.display = "none";
 96 
 97             iframe.src = url;
 98 
 99             document.body.appendChild(iframe);
100 
101         }
102 
103     }else{
104 
105         document.getElementById('BtnClick').href=url;
106 
107         window.location.replace(url);
108 
109     }
110 
111 
112     </script>
113 
114 </body>
115 
116 </html>

但是最开始那2句代码的原理还不是特别清楚,欢迎大家借鉴和指点!

posted @ 2021-03-30 15:41  第一夫人  阅读(475)  评论(0编辑  收藏  举报