h5页面点击按钮打开app某个页面,若未下载app,则打开下载
h5页面点击按钮打开app某个页面,若未下载app,则打开下载
const downloadUrl = 'downloadurl' //==下载地址==
const schema = ‘ ’ //==app协议地址==
function launchAPP(androidurl, schema = 'bangjob://', delay = 3000) {
let timer;
const browser = function () {
const u = navigator.userAgent;
return {
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1
};
}(); // ==判断ios还是android==
function browserOpenApp() {
if (browser.ios) {
window.location.href = schema; //==ios使用href==
timer = setTimeout(function () {
const tag = document.hidden || document.webkitHidden; //==打开app==
if(tag){
clearTimeout(timer); //==清除定时器==
}
else{
window.location.href = link; //==下载==
}
}, delay);
} else if (browser.android) {
const ifr = document.createElement('iframe');//==ios使用iframe==
ifr.src = schema;
ifr.style.display = 'none';
document.body.appendChild(ifr);
timer = setTimeout(function () {
const tag = document.hidden || document.webkitHidden;
if(tag){
clearTimeout(timer);
}
else{
document.body.removeChild(ifr);
window.location.href = androidurl;
}
}, delay);
return false;
}
};
browserOpenZcm();
};
export { launchZcm }
##参考链接
https://segmentfault.com/a/1190000011231042
https://segmentfault.com/a/1190000005848133
https://www.cnblogs.com/gaidalou/p/11058484.html
优化版本
/**
* @param androidurl 安卓下载链接
* @param iosUrl 安卓下载链接
* @param openUrl app协议
* @param delay 在浏览器中尝试拉起app与下载app的时间间隔,缺省值2000
*/
/* tslint:disable */
function launchApp(androidurl, iosUrl,openUrl, delay = 3000) {
const Navigator = navigator.userAgent;
const ifIos = Navigator.match(/iPhone|iPad|iPd/i) ? true : false;
const ifAndroid = (Navigator.match(/(Android);?[\s\/]+([\d.]+)?/)) ? true : false;
let iosVersion = Navigator.match(/OS\s*(\d+)/);
iosVersion = iosVersion ? (iosVersion[1] || 0) : 0;
let androidVersion = Navigator.match(/Android\s*(\d+)/)
androidVersion = androidVersion ? (androidVersion[1] || 0) : 0;
const ifSafari = Navigator.indexOf('Safari') > -1;
let timer;
function openApp(androidUrl,iosUrl,openUrl){
if(ifAndroid && androidVersion >=5){
window.location.href = openUrl;
setTimer(androidUrl)
}
else if(ifIos && iosVersion >= 9 ){
if(ifSafari){
const a = document.createElement('a');
a.href = openUrl;
a.click();
setTimer(iosUrl)
}
else {
window.location.href = openUrl;
setTimer(iosUrl)
}
}
else {
let download = '';
if(ifIos){
download = iosUrl
}
else if(ifAndroid){
download = androidUrl
}
const ifr = document.createElement('iframe');
ifr.src = openUrl;
ifr.style.display = 'none';
document.body.appendChild(ifr);
setTimer(download)
}
function fn(){
clearTimeout(timer);
document.removeEventListener('visibilitychange', fn);
}
document.addEventListener('pagehide',function(){
clearTimeout(timer);
});
}
function setTimer(downloadUrl){
timer = setTimeout(function () {
const tag = document.hidden || document.webkitHidden;
if(tag){
clearTimeout(timer);
}
else{
window.location.href = downloadUrl;
}
}, delay);
}
openApp(androidurl, iosUrl,openUrl);
};
export { launchApp }