实现思路
设置UrlSchemes
代码实现
const u = navigator.userAgent;
// 获取运行环境对象
const versions = {
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
qq: u.match(/\sQQ/i) == ' qq' //是否QQ
};
// 因为打开的是手机H5页面,所以需要判断是否为手机,并且提示
if (!versions.mobile) {
uni.showToast({
title: '请使用手机浏览器打开!',
icon: 'none',
duration: 3000
});
return;
}
// iOS使用Universal Link。Universal Link是通过标准的http/https协议链接唤起App;若未安装App,访问此通用链接,可以自定义页面;
// Android的第一个参数应当URL Scheme,第二个参数为APP下载链接
var appInfo = {
ios: ['https://www.baidu.com/'],
android: ['fxs://com.fangxiansheng.app', 'https://www.baidu.com/']
};
// 在微信浏览器无法打开APP,所以需要提示在外部浏览器打开
if (versions.weixin) {
uni.showToast({
title: '请使用外部浏览器打开!',
icon: 'none',
duration: 3000
});
return;
}
// 判断手机机型
if (versions.ios) {
console.log('ios');
let iOSVersion = u.match(/OS (\d+)_(\d+)_?(\d+)?/);
// 跳转APP并拼接参数
window.location.href = appInfo.ios[0] + e;
} else if (versions.android) {
console.log('android', appInfo.android[0] + e);
// 跳转APP并拼接参数
window.location.href = appInfo.android[0] + e;
//设置定时器的目的是如果第一个app没有安装,则自动跳转第二个
setTimeout(() => {
uni.showModal({
content: '确定下载大病悬赏APP吗?',
success: res => {
if (res.confirm) {
window.location.href = appInfo.android[1];
}
}
});
}, 3000);
}