微信扫二维码调用外部浏览器打开指定页面

需求分析

将打包好的apk/ios文件部署到服务器,把下载页面的URL通过二维码编辑器或根据URL代码生成一个二维码,然后通过二维码进行微信推广已经成为很多用户惯用的方式。但微信会对含apk/ios文件的链接进行了屏蔽,所以导致微信扫码打不开下载链接。理想的状态是安卓自动下载,苹果点击左上角按钮前往Safari下载。那么究竟该如何处理才能达到理想的结果呢?

我们知道 js 可以通过 window.navigator.userAgent 来获取浏览器的相关信息,比如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36,那么我们也可以通过该方法来获取微信内置浏览器的相关信息:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3。根据关键字 MicroMessenger 来判断是否是微信内置的浏览器。从而实现安卓自动下载或跳转到浏览器打开下载链接,苹果会提示点击右上角的按钮前往Safari下载。

代码编程

HTML代码

<?php
// 统一调用微信白名单接口:https://wq.jd.com/mjgj/link/GetOpenLink?callback=getOpenLink&rurl=https://dc2.jd.com/auto.php?service=transfer&type=pms&to=(这里是拼接自己的内容地址比如http://mjbbs.jd.com/data/attachment/forum/201806/08/173526pb2zpjzzooo2ofze.jpg)
if($_GET[‘t‘]){
// include("admin/config.php");
// include("admin/function.php");
$code = $_GET[‘t‘];
$info = query ( "jump_logs", "where code=‘" . $code . "‘" );
if($info[‘code‘] == ‘‘){
    echo ‘跳转失败‘;
    exit(0);
}
if($info[‘state‘] == ‘1‘){
if($info[‘count‘] >= $info[‘num‘]){
    echo ‘跳转失败‘;
    exit(0);
}
$time = strtotime($info[‘time‘]);
    if(time() > $time){
        echo ‘跳转失败‘;
        exit;
    }
}else{
    echo ‘跳转失败‘;
    exit;
}
if($info[‘www_url‘] == ‘‘){
    echo ‘请先配置落地页‘;
    exit;
}else{
    $w_url_code = $info[‘rl‘];
}
?>

CSS代码

1 #weixin-tip{display:none;position:fixed;left:0;top:0;background:rgba(0,0,0,0.8);filter:alpha(opacity=80);width:100%;height:100%;z-index:100;}
2 #weixin-tip p{text-align:center;margin-top:10%;padding:0 5%;position:relative;}
3 #weixin-tip .close{color:#fff;padding:5px;font:bold 20px/24px simsun;text-shadow:0 1px 0 #ddd;position:absolute;top:0;left:5%;}

JS封装代码

<?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--> 

至此,我们就可以直接用微信扫描二维码在微信中分享和宣传引流了。这样我们能够极大的提高自己的APP在微信中的推广转化率。解决掉了微信中下载链接被屏蔽等问题。充分利用微信的用户群体来宣传引流。

原文地址:https://www.cnblogs.com/yhmaq/p/10295837.html

时间: 2024-11-06 09:25:33

微信扫二维码调用外部浏览器打开指定页面的相关文章

分享!Gdtool分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能

前言 现如今微信对第三方推广链接的审核是越来越严格了,域名在微信中分享转发经常会被拦截,一旦被拦截用户就只能复制链接手动打开浏览器粘贴才能访问,要不然就是换个域名再推,周而复始.无论是哪一种情况都会面临一个非常严重的问题,那就是用户体验差,用户量无法有效地累积起来,从而导致推广成本一直在增加,推广效率却无法有明显的提升. 所以针对这个问题,特写这篇文章来分享如何正常从微信内访问已经被拦截的链接,或者说如何有效地防止链接被微信拦截.此方法适用于安卓和苹果,且不需要安装任何软件和插件. ? 简单的处

微信朋友圈分享链接调用外部浏览器打开指定URL链接是如何实现的

做微信营销活动或者APK下载推广时候,域名被经常被封,做到微信中正常使用呢?这就要借助一些工具来实现有效的操作. 先来认识一下微信屏蔽的原理.按原理逐个攻破,本人做防封一年来自认为得心应手,整理如下:微信屏蔽的原理第一是系统的自动检测,第二是微信工作人员的人工检测. 解决方案原理 这种就是利用一些微信BUG,安卓手机的话是通过点击链接,直接跳转出微信.自动打开手机默认的浏览器.但是这个方法IOS的系统不行.所以只能写判断了.安卓手机用户点击直接打开默认浏览器K. 原文地址:https://www

微信扫描二维码在内置浏览器打不开文件的下载链接怎么办?哪些api接口可以解决

有哪些api接口可以实现微信扫描二维码在内置浏览器打开文件的下载链接? 经常看到贴吧上有人吐槽微信的检测系统太严格了,动不动就拦截第三方链接.怎么才能解决,怎么才能避免等等一系列的问题.因为平时我也会分享一些有趣的app给朋友,所以这个问题就成了我的心头大患.于是我去百度找各种解决方案,最终找到了几个比较靠谱的api接口,用了以后感觉挺方便的,特写该篇文章分享给大家: Mindjump-API接口平台 366API-接口平台 大象跳转-API接口平台 这三个平台就接口稳定性这块相差都不大,唯一就

有哪些api接口可以实现微信自动唤醒外部浏览器打开指定页面?

有哪些api接口可以实现微信自动唤醒外部浏览器打开任意网页url 经常看到贴吧上有人吐槽微信的检测系统太严格了,动不动就拦截第三方链接.怎么才能解决,怎么才能避免等等一系列的问题.因为平时我也会分享一些有趣的新闻或者广告链接给朋友,所以这个问题就成了我的心头大患.于是我去百度找各种解决方案,最终找到了几个在线生成微信跳转链接的api接口,用了以后感觉很方便,就分享给大家,希望能帮助到你. 1.Mindjump接口平台:http://www.mindjump.cn2.366API接口平台:http

ios app 解决微信扫二维码不能跳转问题

<script> (function(){ // Setup GA (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNo

微信扫一扫二维码跳转手机默认浏览器打开下载app的链接是怎么实现的

微信上进行的网页宣传.游戏传播.APP下载各类活动很多,但是各位朋友肯定经常会遇到一些特殊需求,网页需要在手机默认浏览器打开而不是微信内置浏览器.这个问题怎么解决呢? 斗在微信营销的浪潮中 解决方案:微信中打开链接,自动打开外部浏览器打开页面 微信中点击或打开链接,自动打开外部浏览器打开指定页面.全程完全自动化,无需用户任何手工操作. 这种方案可以说是完美解决这个的问题.效果如下面这样子: 这个样子,用户点击下载按钮后,全过程自动化下载,用户操作非常简单,可以大大提升用户转化率. 原文地址:ht

微信如何唤起外部浏览器打开指定链接

微信上进行的网页宣传.游戏传播.APP下载各类活动很多,但是各位朋友肯定经常会遇到一些特殊需求,网页需要在手机默认浏览器打开而不是微信内置浏览器.这个问题怎么解决呢? 解决方案:微信中打开链接,自动打开外部浏览器打开页面 微信中点击或打开链接,自动打开外部浏览器打开指定页面.全程完全自动化,无需用户任何手工操作. 这种方案可以说是完美解决这个的问题.效果如下面这样子: 这个样子,用户点击下载按钮后,全过程自动化下载,用户操作非常简单,可以大大提升用户转化率. 桔子跳转是一款基于微信后端开发了一款

js如何实现在微信浏览器内跳转外部浏览器打开指定下载链接

微信被认为是目前最具营销价值的营销渠道之一,原因很简单,微信是目前超高活跃度的app稳稳第一名,但是在微信中点击app下载链接,都是无法下载app的.因为腾讯为了自身利益,屏蔽了其他app直接在微信中下载.我们要怎么解决这个问题呢? 解决方式: 微信中打开链接,自动打开外部浏览器打开页面 微信中点击或打开链接,自动打开外部浏览器打开指定页面.全程完全自动化,无需用户任何手工操作. 这种方案可以说是完美解决这个的问题.效果如下面这样子: 这个样子,用户点击下载按钮后,全过程自动化下载,用户操作非常

如何设置微信点击链接或扫一扫二维码跳转外部浏览器打开网页下载

本文章向大家介绍微信自动跳转浏览器打开APP(APK)下载链接,主要包括微信自动跳转浏览器打开APP(APK)下载链接使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下. 操作步骤 月牙跳转是一款基于微信后端开发了一款微信营销下载推广助手,使用了本插件生成的链接,用户在微信任意环境下点击链接或者扫描二维码,可以实现直接跳转手机默认浏览器并打开指定网页. 1.打开 月牙跳转 网址:http://www.aizhuanlove.cn/ 2.准备好我们的推广链