在唤起应用页面用JS代码请求该协议,如果在3000ms内有应用程序能解析这个协议,那么就能打开该应用;如果超过3000ms就跳转到app下载页。
//直接调用这个方法即可
async checkInstallApp() {
var u = navigator.userAgent;
var isWeixin = u.toLowerCase().indexOf('micromessenger') !== -1; // 微信内
if(isWeixin){
alert('请在浏览器上打开')
return false;
}
const platform = uni.getSystemInfoSync().platform;
if (platform === 'ios') {
this.ios()
}
if (platform === 'android') {
this.android()
}
},
ios() {
uni.showLoading({
title: '加载中'
});
const currentTime = +(new Date());
window.location.href = ""; //找ios工程师要 UrlSchemes
//启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束
let _count = 0,timer;
timer = setInterval(function() {
_count++;
const endTime = +(new Date()) - currentTime;
if (_count >= 100 || endTime > 3000) {
uni.hideLoading()
clearInterval(timer);
let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden;
if(typeof hidden =="undefined" || hidden ==false){
//App store下载地址
window.location.href = "";//下载地址 可以直接跳转到appstore的
}
}
}, 20);
}
android() {
uni.showLoading({
title: '加载中'
});
const currentTime = new Date().getTime();
window.location.href = "";//找android工程师要 UrlSchemes
// 启动间隔20ms运行的定时器,并检测累计消耗时间是否超过2000ms,超时则结束
let _count = 0,
timer;
timer = setInterval(() => {
_count++;
const endTime = new Date().getTime() - currentTime;
if (_count >= 200 || endTime > 5000) {
uni.hideLoading()
clearInterval(timer);
let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden;
if(typeof hidden =="undefined" || hidden ==false){
//App store下载地址
window.location.href = "";//下载地址
}
}
}, 20)
}