admin管理员组

文章数量:1585965

不管是app的下载链接还是普通文件的链接在微信内置浏览器或者QQ内置浏览器分享都会被拦截。这是腾讯对第三方下载域名实施的打压政策。被屏蔽了也就意味着链接在微信中是无法正常打开的,那么此时用户在微信内打开就会提示“已停止访问该网页”。那么我们遇到这个问题该怎么办呢。

首先我们要解决域名被拦截的阻碍,其次就是实现微信内直接下载app或打开指定页面的功能。下面给大家大概分析一下如何实现功能和实现后的效果。

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

1、申请腾讯开放平台开发者

具体流程可以去访问http://open.qq/,大概的意思是需要将apk提交到腾讯开放平台的里面,每个apk应该会自动生成一个二维码,每年支付一定的费用,然后在微信里面扫一下这个二维码,这个时候也需要先安装一个手机应用宝,才能进行 apk的安装。

对于这种方案,只能用一种很流行的话说:”很任性”。

2、重定向

这种方法对于一些已经发布出去的二维码比较有用,也是目前比较普遍的做法。不可能因为微信不能直接下载了,就得把所有的已经流出去的二维码重新生成吧?

2.1 判断浏览器类型

/*首先判断是否是pc,若是pc访问则跳转到http://app.ctrip/*/  
 var u = navigator.userAgent || ''; var isPC = !/(iphone|ios|android|mini|mobile|mobi|Nokia|Symbian|iPod|iPad|Windows\s+Phone|MQQBrowser|wp7|wp8|UCBrowser7|UCWEB|360\s+Aphone\s+Browser)/i.test(u); if (isPC) { location.href = "http://www.hipermart"; }

如果是pc端的话,那么直接重定向到一个网站

如果是非pc端的话,那么要区分是android还是apple?

2.2 判断是android还是iOS?

因为我们假设iOS的下载必须从苹果的appstore里面下载,那么其下载地址有一定的规律,比如说sourceid等。

可以通过一个正则表达式来确定。

var urls = document.location.search, re2 = new RegExp("(\\\?|&)sourceid=([^&]+)(&|$)", "i"), from = urls.match(re2);
    if (from) { sid = from[2]; }

document.location.search

比如一个URL是XXXX?g=1,那么document.location.search的值就是?g=1

2.3 重定向到下载地址

window.onload = function () { //修复图片偶尔不能加载
        var salesLocal = localStorage.getItem("SALESOBJ") ? JSON.parse(localStorage.getItem("SALESOBJ")) : null;
        var appUrl = salesLocal && salesLocal.data && salesLocal.data.appurl ? salesLocal.data.appurl : "";
        if (!isPC && !iswx) {
            if(appUrl){
                location.href = appUrl;
            }else if(sid){
                location.href = "/m/" + sid;
   

本文标签: 打不开解决方案链接二维码微信里