admin管理员组文章数量:1616033
打开app
思路:通过判断安卓和iOS在各浏览器行为,决定使用universal link还是url scheme,如果没有安装app则跳转到下载页
通过下文可知,除微信内置浏览器外,ios都可通过url scheme打开app,安卓亦是如此。【排除百度浏览器,百度浏览器是可以用universal link打开,不可以用url scheme,有需要的同学可以自行判断。我也是因为听说百度浏览器行为也有差异才测了下,但懒得做判断了】
鉴于QQ内置浏览器只能使用a标签打开url scheme,所以url scheme统一使用a标签打开,只判断当前浏览器是否是微信内置浏览器即可【按理说,如果是微信内置浏览器应该使用公众号的WeixinJSBridge.invoke launchApplication方法才对,不过暂时没这个条件就没弄了,弄了再更新吧】
官方文档地址不知在哪,csdn搜到的要积分下载,只能放个我有道云的在线文档地址了
微信内 5 H5 唤起外部客户端
相关代码:
// html
<a href="你的APP url scheme" id="js-a" style="visibility: hidden;"></a>
<button class="btn" onclick="openApp()">测试</button>
<script>
// 打开app
function openApp() {
//js判断是否ios或Android
var u = navigator.userAgent;
// 判断浏览器
var ua = u.toLowerCase(),
isWx = false,
isQQ = false,
isQQInstalled = false;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
//微信浏览器
isWx = true;
}
if (isAndroid) {
if (isWx) {
// 微信内置浏览器
alert('请用其他浏览器打开');
} else {
judgeOpen();
}
return;
}
if (isiOS) {
if (isWx) {
// 微信内置浏览器 打开universal link
/*
你的APP 下载地址 设为 universal link
// 则有APP打开APP, 无APP打开下载页
*/
window.location.href = '你的APP 下载地址';
} else {
judgeOpen();
}
}
}
// 判断打开
function judgeOpen() {
// 点击 打开url schema
var aaa = document.getElementById('js-a');
aaa.click();
setTimeout(function () {
if (document.visibilityState == 'hidden') {
console.log('跳转至app了,当前页面不可见');
return;
}
window.location.href = '你的APP 下载地址';
}, 3000)
}
</script>
安卓和iOS在各浏览器行为
主要测试了QQ内置浏览器,微信内置浏览器,QQ浏览器,UC浏览器,百度浏览器,Safari,及华为默认浏览器。
测试机型:苹果 xr【ios 13.6】, 华为P9 【安卓 8.0】
以下打勾表示可使用,中括号表示浏览器类型是否可识别
QQ内置浏览器
iOS[可以识别]
universal link
- window.location
- a 标签
url scheme
- window.location
- a 标签
安卓[无法识别]
url scheme
- window.location
- a 标签
微信内置浏览器
iOS[可以识别]
universal link
- window.location
- a 标签
安卓[识别成微信和qq浏览器]
url scheme[安卓,iOS]
- window.location
- a 标签
QQ浏览器[iOS, 安卓可以识别]
iOS
universal link
- window.location
- a 标签
url scheme[安卓,iOS]
- window.location
- a 标签
UC浏览器[安卓,iOS识别为其他浏览器,且取消后无法继续打开]
iOS
universal link
- window.location
- a 标签
url scheme[安卓,iOS]
- window.location
- a 标签
百度浏览器[安卓,iOS 识别为其他浏览器]
iOS
universal link
- window.location
- a 标签
url scheme[安卓,iOS]
- window.location
- a 标签
其他浏览器[安卓,iOS 识别为其他浏览器]
iOS
universal link
- window.location
- a 标签
url scheme[安卓,iOS]
- window.location
- a 标签
识别代码
var u = navigator.userAgent;
// 判断浏览器
var ua = u.toLowerCase(),
isWx = false,
isQQ = false,
isQQInstalled = false;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
var str = '';
if (ua.indexOf(' qq') > -1 && ua.indexOf('mqqbrowser') < 0) {
//qq内置浏览器
isQQInstalled = true;
// alert('这是qq内置浏览器');
str = 'qq内置浏览器, ';
}
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
//微信浏览器
isWx = true;
str = str + '微信内置浏览器, ';
}
if (ua.indexOf('mqqbrowser') > -1 && ua.indexOf(" qq") < 0) {
//qq浏览器
isQQ = true;
// alert('这是qq浏览器');
str = str + 'qq浏览器, ';
}
if (!str) {
str = '其他浏览器';
}
if (isAndroid) {
str = str + '安卓, ';
}
if (isiOS) {
str = str + 'IOS, ';
}
版权声明:本文标题:网页打开app 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728735985a1170899.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论