h5页面点击按钮打开app某个页面,若未下载app,则打开下载

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 }

猜你喜欢

转载自blog.csdn.net/qq_39692513/article/details/112990244