最近在做一个H5网页,实现h5网页打开提示需要打开某某App,效果如下:
H5唤醒App的方法有好几种,如下:
- URL Scheme(通用)
- Universal Link (iOS)
- App Link、Chrome Intents(android)
URL Scheme
这种方法用的人比较多,兼容性也很好,它一般由协议名、路径、参数组成。
[scheme:][//authority][path][?query][#fragment]
常用App浏览器的URL Scheme例如:
//UC浏览器
ucbrowser://
//QQ浏览器
mttbrowser://
//Chrome谷歌浏览器
googlechrome://
//QQ浏览器:
qq browser://
//猎豹浏览器:
sinaweibosso.422729959://
//百度
baiduboxapp:// 或 BaiduSSO://
常用应用App的URL Scheme例下,如果想查找更多App的URL Scheme
可以跳转到这个地址 。
//微信
weixin://
//支付宝
alipay://
//QQ
mqq://
//淘宝
taobao://
//钉钉
dingtalk://
//拼多多
pinduoduo://
// 等等...
使用方法也很简单:
// 可在后面添加路径地址,参数等
window.location.href = 'googlechrome://'
// 也可以使用 a标签
<a href="googlechrome://">打开APP</a>
但我在使用googlechrome://
的时候发现无法正常使用,后面查了些资料,可能有一些浏览器是会有白名单限制的,如要跳转到chrome
的App的话,可以尝试使用下面的方法!
Intent语法
var url = window.location.href // 获取当前的url地址
var newUrl = url.replace(/^https:\/\//, '') // 进行截取 https:// 后面的链接参数
var intentUrl = `intent://${newUrl}#Intent;scheme=https;package=com.android.chrome;end`; // package 打开的应用
window.location.href = intentUrl;
案例:实现h5移动端网页,访问的浏览器不在chrome浏览器的时候,提示网页想要打开“chrome” App。
function goUrlRef() {
var isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
if (isMobile) {
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent.indexOf('Chrome') >= -1) {
console.log("您正在使用谷歌浏览器!");
// 直接跳转到下载链接
} else {
getCurrentUrl()
console.log('不是谷歌浏览器,进行提示跳转!');
}
} else {
console.log("您当前使用的是PC设备!");
}
}
function getCurrentUrl() {
var url = window.location.href;
var newUrl = url.replace(/^https:\/\//, '');
var intentUrl = `intent://${newUrl}#Intent;scheme=https;package=com.android.chrome;end`;
window.location.href = intentUrl;
}
goUrlRef()
如有帮助到你,不妨点个赞,后续有问题将继续补充~