微信浏览器自动选择默认浏览器

需求分析

不管是app的下载链接还是普通文件的链接在微信内置浏览器包括QQ内置浏览器都会被屏蔽。这是微信对第三方下载域名实施的屏蔽政策。那么这个问题该如何避免乃至解决呢?

首先我们需要对分享域名加JS防封接口,其次我们需要对域名进行处理,以达到ios用户在微信中的打开系统自动提示前往Safari打开下载页,安卓用户自动打开手机默认浏览器前往下载页。但是对于很多用户而言并不知道这样的实现,所以需要在代码中进行相关操作。目前ios只能通过遮罩层来提示用户,安卓则可以直接跳转外面默认浏览器,下面就分别介绍下这2种方式的实现方式。

实现方式

1. 遮罩提示(多用于ios系统)

遮罩引导法,这种是最简单的方法,一般会用在ios上较多。屏蔽图如下:

1.1  实现代码

?
function isWx(){//判断是否为微信
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == ‘micromessenger‘){
        return true;
    }
    return false;
};
if(isWx()){//判断浏览器是否微信
    var html=‘<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:3358246772-->

1.2  实现效果

2.  链接跳转

2.1  安卓系统处理方法

对于安卓系统而言,可实现微信内置浏览器直接跳转手机默认浏览器打开指定页面。实现代码如下:

?

<?php
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‘)){//安卓百度手机APP
            echo ‘<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‘)){//安卓百度手机APP
            echo ‘<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>‘;
            }
    }
}
?>
?
<?php
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‘)){//安卓百度手机APP
            echo ‘<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‘)){//安卓百度手机APP
            echo ‘<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>‘;
            }
    }
}
?>
<!--有不懂的地方联系我的Q:3358246772--> 

2.2  ios系统  

对于ios系统则无法直接实现,需要添加判断,判断代码如下

?
function isDevice(){//判断是android还是ios还是web
    var ua = navigator.userAgent.toLowerCase();
    if(ua.match(/iPhone\sOS/i) == "iphone os" || ua.match(/iPad/i)=="ipad"){//ios
        return "iOS";
    }
    if(ua.match(/Android/i) == "android") {
        return "Android";
    }
    return "Web";

?
?
header("Content-type:application/pdf");
header("Content-Disposition:attachment;filename=‘downloaded.pdf‘");

此时微信会因为头部是下载处理,自动跳转到浏览器中打开这个链接,主要就是让服务端返回一个PDF下载就行了,这样微信就会直接跳出到浏览器打开。

至此,我们在微信中分享下载链接或二维码就不会出现无法自动跳转的问题了,本代码另外还附带了防封接口,可最大程度防止微信封域名的情况。这样我们就可以直接用微信扫描二维码在微信中分享和宣传引流了。如此我们即能够极大的提高自己的APP在微信中的推广转化率。也解决掉了微信中下载链接被屏蔽等问题。充分利用微信的用户群体来宣传引流。

原文地址:https://www.cnblogs.com/xxnhh/p/10327520.html

时间: 2024-10-12 22:41:37

微信浏览器自动选择默认浏览器的相关文章

实现微信浏览器自动播放MP3音乐

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>MP3</title> <script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js"></script> </hea

如何用WxJump实现从微信中自动跳转到浏览器并下载APP(apk下载)

做微信营销活动或者APK下载推广时候,域名经常被封,如何做到微信中正常使用呢?这就要借助一些工具来实现有效的操作. 之前公司有一个新的APP项目上线,让我们在项目首页做个二维码,然后用户用手机扫一扫就能下载了.但是微信的扫一扫之后下载不了. 上网查了一下,微信自带的内置浏览器屏蔽了下载功能,所以才出现用微信扫一扫不能下载的情况.这时候我们一般会建议用户使用uc或者其他第三方浏览器自带的扫一扫功能下载.但是现在的微信太普及了,很多人都习惯性的使用微信来扫码下载,总不能每个用户都解释一遍,所以我们一

在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"

微信浏览器实现音乐自动播放

转至:http://www.ipastimes.com/post/52.html HTML5音频播放在移动端有局限性,在移动版 Safari 中加载的页面上,不能自动播放音频文件.音频文件只能从用户触发的触摸(单击)事件加载.如果在 HTML 标记中使用了 autoplay 属性,那么移动版 Safari 将会忽略这个属性,并且不会在加载页面时播放此文件,避免移动端流量在不知不觉中浪费,很人性化的设计.但对HTML5应用开发者来说,这不是个好消息. 网上查找了很多资料,通过hack手段来实现自动

vivo手机的坑-禁止微信浏览器网页点击图片,图片会自动放大

这个坑让我郁闷极了,之前我的手机在微信浏览器打开网页点击图片时,啥事也没有 现在,咋回事,变了呢! 现在我打开微信浏览器网页面html,点击一个img标签的图片,图片会自动满屏放大,吓死宝宝了.其他人的手机就咋没有这个问题呢,我的pie手机 这种事情的发生有时候是让我高兴的,但是有时候是悲伤的(若是我需要给一个按钮添加点击事件且按钮里存在img标签时,太TMD悲伤了): 现在终于解决了这种事情的发生!!!! 移动端禁止图片长按和vivo手机点击img标签放大图片,禁止长按识别二维码或保存图片 i

Mindjump-微信跳转浏览器功能源码,实现微信内自动跳转手机浏览器访问网页url

源码使用场景:1.用来实现微信自动跳转外部浏览器下载app2.用来实现微信内打开网页链接自动跳转浏览器访问指定页面3.防止网页链接由于被微信拦截,导致用户无法正常在微信内打开 源码说明: 适用安卓和苹果系统,支持任何网页链接.并且无论链接是否已经被微信拦截,均可实现微信内自动跳转浏览器打开. 生成的跳转链接具有极佳的防拦截效果. 源码体验: 1.复制分享链接(app下载页链接或网页链接),然后在浏览器(电脑和手机上都可以)中打开我们需要用到的 Mindjump 平台:http://www.min

366API:一键生成微信跳转链接,实现微信内自动跳转浏览器打开URL

现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来,从而导致推广成本一直在增加,推广效率却无法有明显的提升. 所以针对这个问题,特写这篇文章分享如何通过api接口工具轻松地实现微信内自动跳转浏览器打开URL网页的功能. 微信api接口使用方法 1. 用浏览器打开我们需要用到的366API 地址:http://www.366API.cn/ 2. 将你的

366API能一键生成微信跳转链接,实现微信内自动跳转浏览器打开URL网页的工具

我们都知道现如今微信对第三方app下载链接的拦截是越来越严格了,下载链接在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,如此给用户带来的体验台差,用户量无法有效地累积起来,从而导致推广成本一直在增加,推广效率却无法有明显的提升. 所以针对这个问题,特写这篇文章分享如何通过api接口工具轻松地实现微信内自动跳转浏览器打开URL网页的功能. 微信api接口使用方法 1. 用浏览器打开我们需要用到的 366API 地址:http://www.366API.cn/

微信直接唤起手机默认浏览器的调研方案

使用微信推广的用户经常都会遇到推广链接被封导致无法下载app的情况,此时用户在微信中打开会提示"已停止访问".这对于使用微信营销的商家来说就很不友好了且损失非常大,因为用户是不知道为什么打不开的,故就不知不觉地流失了或者选择其他平台了. 那么针对这个问题到底要怎么解决呢,其实只需要一个微信跳转其他浏览器打开下载页的功能,该功能是需要在代码里加入防封接口和跳转接口的.目前ios系统由于苹果官方的限制,只能做到加遮罩提示前往Safari打开,而安卓系统就简单的多了,直接能实现微信内跳转手机