用vue3写的wep页面。亲测好使。
疑惑:
微信跳转和浏览器跳转不一样,需要控制定时器的时间,android在没下载的情况下点击没反应,ios在没下载的情况下会跳404,就是定时器2000,不知道有没有别的办法,用iframe嵌套ios的跳转在没下载的情况下是404,2000是刚好的时间点,有点刚刚好,不是特别完美。有大佬会的可以交流。
<template>
<div>
<div class="bottom_button">
<div class="downloadapp" @click="downloadApp">下载客户端</div>
<div class="openapp" @click="openApp">已下载APP 立即打开</div>
</div>
</div>
</template>
<script setup>
onMounted(function() {
// 禁止图片滚动
document.addEventListener('touchmove', function(e) {
e.preventDefault();
}, { passive: false });
isWeiXinLogin();
})
// 微信打开还是普通浏览器打开
const isWeiXinLogin = () => {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
return true; // 微信中打开
} else {
return false; // 普通浏览器中打开
}
};
// 检测是哪个客户端
const detectDevice = () => {
/**
* navigator.userAgent用户浏览器相关信息的只读属性
* window.opera JavaScript语言,是opera5开始有的一个脚本object,一个boolean的值,用来检察浏览器是否是opera
*/
var userAgent = navigator.userAgent || navigator.vendor || window.opera;
if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
return 'iOS';
} else if (userAgent.match(/Android/i)) {
return 'Android';
} else {
return 'unknown';
};
};
// 打开app
const openApp = () => {
let deviceType = detectDevice();
if (deviceType === 'Android' && !isWeiXinLogin()) {
console.log(isWeiXinLogin(), '123');
console.log('安卓用户在没安装的情况下点击没反应,有的话在跳转');
try {
const appURL = ""; // 替换成你的应用的URL Scheme或Universal Link
window.location.href = appURL;
} catch (error) {
// 如果捕获到错误,通常意味着应用没有安装
console.error("应用未安装或无法打开", error);
downloadApp();
}
} else {
alert('请点击右上角按钮,在菜单中通过浏览器打开,即可打开');
}
if (deviceType === 'iOS') {
console.log('苹果用户,在没安装的情况下会跳转到一个404页面。需要做一个处理');
const appURL = "跳转地址"; // 替换成你的应用的URL Scheme或Universal Link
let loadDateTime = new Date();
window.setTimeout(function() {
let timeOutDateTime = new Date();
console.log(timeOutDateTime, 'timeOutDateTime', timeOutDateTime - loadDateTime < 5000, timeOutDateTime - loadDateTime);
if (timeOutDateTime - loadDateTime < 5000) {
downloadApp();
} else {
window.close();
}
}, 2000);
window.location = appURL;
}
};
// 下载app
const downloadApp = () => {
let deviceType = detectDevice();
if (deviceType === 'Android' && !isWeiXinLogin()) {
const downloadURL = "";
window.location = downloadURL;
} else {
alert('请点击右上角按钮,在菜单中通过浏览器打开,即可安装');
}
if (deviceType === 'iOS') {
// 跳转到应用商店下载应用的URL
const downloadURL = ""; // 替换成你的应用下载链接
window.location = downloadURL;
} else {
console.log('其他');
}
}
</script>