微信浏览器中h5网页如何打开默认浏览器

常见需求:html5 网页在微信中打开的时候,需要下载APP,或者唤起APP,到APP内部去完成部分操作。

常见做法:html5 网页上按钮点击,弹出遮罩层,提示用户点击右上角更多,使用默认浏览器打开,这是大部分网页的常见做法。

思考:有没有一种方法,在微信浏览器中,html5网页直接打开默认浏览器?

思路:微信中如果服务端返回下载文件,微信会如何?

安卓实测:如果服务端直接返回文件下载,微信会直接拉起默认浏览器打开网页。

iOS实测:无法拉起Safari浏览器,可考虑直接打开App Store。

实现

php 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
header("Content-type:text/plain; charset=utf-8");

// 获取设备信息
function getDeviceType() {
// 全部变成小写字母
$agent = strtolower($_SERVER['HTTP_USER_AGENT']);
$type ='other';
// 分别进行判断
if(strpos($agent, 'iphone') || strpos($agent, 'ipad')){
$type ='ios';
}

if(strpos($agent, 'android')){
$type ='android';
}
return $type;
}

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
$type = getDeviceType();
if ($type === 'android') {
// 如果是在安卓微信中打开,则返回PDF文件下载头信息
header("Content-type:application/pdf; charset=utf-8");
header("Content-Disposition:attachment;filename=downloaded.pdf");
} else if ($type === 'ios') {
echo 'iOS 跳转 App Store';
} else {
echo '请点击右上角使用默认浏览器打开';
}
}else{
// 非微信中打开网页,获取链接中的 URL 参数
$url = $_GET['url'];
// 重定向到 URL 地址
// header('location:'.$url);
echo '跳转链接:'.$url;
}
?>

有了以上代码,可直接前往默认浏览器下载,而无需提示用户点击右上角使用默认浏览器打开了。

本文由 linx(544819896@qq.com) 创作,采用 CC BY 4.0 CN协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。本文链接为: https://blog.jijian.link/2022-04-30/wx-open-browser/

如果您觉得文章不错,可以点击文章中的广告支持一下!