告诉你怎样手机浏览器网页中点击链接跳转到微信浏览器并打开指定的页面

2018-06-20 18:33:47 +08:00
 yyyyadmin

背景:前段时间,公司有个需求,需要从手机浏览器唤醒微信,并打开指定的网页,经过测试发现,微信没有直接提供这块的功能。

经过我们一帮人没日没夜的加班测试,终于搞定了生成生成跳转微信跳转链接的方法。

有些做技术的,总藏着掖着,一点分享精神都没有,下面将把我研究出来的解决方案。分享给大家,希望对大家有所帮助。

跳转原理分析:

从手机浏览器等非微信环境,跳转到微信,都是利用 weixin://dl/business/?ticket=ta42491d55a5fae0e143599655f2efe6e 这种形式的微信 scheme。微信为了让京东,美团大的合作商家能直接跳转到微信,都给了他们 生成跳转微信接口。跳转的原理,就是利用微信提供给这些商家的接口,把我们的链接转换成对应的 ticket 链接。

在哪儿可以找到微信跳转的接口呢?我们分析跳转链接后,发现了接口的出处。

接口地址: http://uxuuu.cn

到网站上可以申请到微信跳转接口,然后直接调用他们提供的接口,就可以把我们的链接转换成对应的微信跳转链接了。

微信跳转这块有什么问题,可以加我 QQ:179126172,一起沟通交流微信跳转技术。

8404 次点击
所在节点    浏览器
4 条回复
jieke
2018-09-27 17:53:57 +08:00
这个很简单的啦,我这边都分享源码给很多需要这个功能的朋友了。
jieke
2018-09-27 17:56:51 +08:00
<?php

include("data/config.php");

$id = $_GET['id'];
$sql = "select * from wx_list where id='".$id."'";
$rs = mysql_fetch_array(mysql_query($sql));

$s_time = strtotime (date('Y-m-d'));
$e_time = strtotime ($rs['e_time']);
$r_time = ceil(($e_time - $s_time));
if($r_time <= 0){
echo '
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<title>跳转失败</title>
</head>
<body>
<div style="text-align: center;font-size: 18px;margin: 100px 0 30px 0;"></div>
</body>
</html>
';
exit;
}

$count = $rs['count'] + 1;
mysql_query($sql = "update wx_list set count='".$count."' where id='".$id."'");

function get_ticket($code){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$contents = curl_exec($ch);
preg_match('/ticket=(.*?)\"/',$contents,$result);
$content = $result[1];
return $content;
}

if(time() - $rs['uptime'] >= 1800) {
$www_url = get_ticket($rs['www_url']);
mysql_query($sql = "update wx_list set ticket='".$www_url."',uptime='".time()."' where id='".$id."'");
} else {
$www_url = $rs['ticket'];
}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<title>正在跳转中</title>
</head>
<body>
<div style="text-align: center;font-size: 18px;margin: 100px 0 30px 0;"></div>
<a href="weixin://dl/business/?ticket=<?php echo $www_url ?>" style="width: 90%;background: #1AAD19;text-align: center;color: #fff;margin: 0 auto;box-sizing: border-box;font-size: 18px;line-height: 2.55555556;border-radius: 5px;display: block;text-decoration: none;">再次跳转</a>
<script>window.location.href="weixin://dl/business/?ticket=<?php echo $www_url ?>";</script>
<!--一起交流了学习,需要整套源码的再联系扣扣:三二二零一久二一八三-->
</body>
</html>
jieke
2018-09-27 17:57:56 +08:00
这个的话,数据库自己可以用 mysql 写一个,然后用这个去访问数据库就可以了
jieke
2018-09-27 17:59:23 +08:00
玩过公众号的也可以去尝试,我之前用公众号实现过相同的功能,现在没用公众号弄了,对我不实用,有兴趣的朋友可以去看下呗。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/464488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX