微信浏览器下载文件不起作用的解决方案

问题分析

当我们在微信内分享链接或二维码的时候,我们会发现我们的网站是可以在浏览器里正常打开的,但就是不能在微信里打开,提示 “ 已停止访问该网页 ”,无论是聊天框也一样。说是系统检测的您的网址被微信策略屏蔽,有任何问题请到微信拦截页面上申诉处理。

其实这个问题很多使用微信推广的商家几乎每天都能遇到,这是一个令人非常头疼的问题。因为它不仅影响了推广效率,还给用户带来了非常差的体验,变向地自然就是会影响到我们的收益。

解决方案

就以上所说的问题,其实说难解决也不难,说简单也不简单,一起都依据在你到底对微信的系统研究有多深。我给大家讲一下我的经验吧,其实我碰到这个问题我都是直接在php代码里加一点料,再加个跳转接口,就完美地解决了该痛点。

下面给大家简单讲解一下究竟如何实现改功能吧。实现教程:http://www.zjychina.cn

实现效果

首先我们需要对分享域名加JS防封接口,然后我们再加入浏览器外跳接口,以达到我们的期望需求。

功能实现后,ios系统可在微信内直接下载app,安卓系统则自动打开手机浏览器下载app,如果不含下载文件,则直接打开网页。下面是含app下载的实现相关的实现效果:

1. App Store应用实现效果

2. 企业版app实现效果

3. 安卓用户则自动打开手机浏览器访问网页或者下载app。

代码解析

function isWx(){//判断是否为微信varua = window.navigator.userAgent.toLowerCase();

    if(ua.match(/MicroMessenger/i) =='micromessenger'){

        returntrue;

    }

    returnfalse;

};if(isWx()){//判断浏览器是否微信varhtml='<div class="box"><img src="images/head.png"></box>'    layer.open({//这里使用了layer的弹窗组件,你也可以自己写type:1,content: html,anim:'up',

          style: 'position:fixed; bottom:0; left:0; width: 100%; height: 100%; padding:0; border:none;'      });

      return;

}<--有不懂的加我q:174494294-->

function get_ticket($code){

    //初始化$ch = curl_init();

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts$headers = array();

    $headers[] ='User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_1_2 like Mac OS X; zh-CN) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/15B202 UCBrowser/11.7.7.1031 Mobile  AliApp(TUnionSDK/0.1.20)';

    $headers[] ='Referer: https://m.mall.qq.com/release/?busid=mxd2&ADTAG=jcp.h5.index.dis';

    $headers[] ='Content-Type:application/x-www-form-urlencoded; charset=UTF-8';

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $content = curl_exec($ch);

    curl_close($ch);

    //$arr = json_decode($content,1);

    //if($arr['success'] == '1'){

    //    $shotCode = $arr['shotCode'];

    //}else{

    //    $shotCode = '';

    //}

    //preg_match('/openlink\":\"(.*?)\"}/',$content,$result);

    //$url = $result[1];   

    preg_match('/href=\"(.*?)#wechat/',$content,$result);

    $url = $result[1];

    return $url;

}

    $time = time()-$info['ticket_time'];

    $minute=floor($time/60);

    query_update ( "jump_logs","count=count+1"." where code='". $code ."'" );

    if($minute >=59){

        //如果超过1小时,更新ticket$url = get_ticket($w_url_code);

        if($url){

        query_update ( "jump_logs","ticket_time='".time()."', ticket='". $url ."' where code='". $code ."'" );

        $ticket_url = $url.'#';

        if(strpos($_SERVER['HTTP_USER_AGENT'],'baiduboxapp')||strpos($_SERVER['HTTP_USER_AGENT'],'baiduboxapp')){//安卓百度手机APPecho'<script>window.location.href = "bdbox://utils?action=sendIntent&minver=7.4&params=%7b%22intent%22%3a%22'.$url.'%23wechat_redirect%23wechat_redirect%23Intent%3bend%22%7d";</script>';

            }else{

                echo '<script>window.location.href = "'.$ticket_url.'";</script>';

            }

        }

    }else{

        $ticket_url = $info['ticket'].'#';

        if(strpos($_SERVER['HTTP_USER_AGENT'],'baiduboxapp')||strpos($_SERVER['HTTP_USER_AGENT'],'baiduboxapp')){//安卓百度手机APPecho'<script>window.location.href = "bdbox://utils?action=sendIntent&minver=7.4&params=%7b%22intent%22%3a%22'.$info['ticket'].'%23wechat_redirect%23wechat_redirect%23Intent%3bend%22%7d";</script>';

            }else{

                echo '<script>window.location.href = "'.$ticket_url.'";</script>';

            }

    }

}?>

function isDevice(){//判断是android还是ios还是webvarua = navigator.userAgent.toLowerCase();

    if(ua.match(/iPhone\sOS/i) =="iphone os"|| ua.match(/iPad/i)=="ipad"){//iosreturn"iOS";

    }

    if(ua.match(/Android/i) =="android") {

        return"Android";   

    }

    return"Web";

};

代码处理完后,再加入跳转接口,方可智能选择是下载app还是打开网页。如此一来我们就解决了域名被微信拦截的问题了,那么接下来就可以在微信内大量的分享链接或二维码来进行宣传引流了。如此也能够极大地提高自己的APP在微信中的推广转化率,充分利用微信的用户群体来增加收益。  

t3gdj7ty.png

猜你喜欢

转载自blog.csdn.net/lolsky695/article/details/87878829