H5唤醒手机内置应用市场方法

安卓的应用市场通用链接是market://details?id=你的应用id

iOS的应用市场通用链接是itms-appss://apps.apple.com/cn/app/id你的苹果应用id

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var isAndroid
var isIos
function getOs() {
if (navigator.userAgent.match(/Android/i)) {
isAndroid = true
} else if (navigator.userAgent.match(/iPhone|iPad|iPod/i)) {
isIos = true
} else {
text = '暂不支持的系统'
}
}

// 检查app是否打开
function checkOpen(cb) {
var clickTime = +(new Date());

function check(elsTime) {
if (elsTime > 5000 || document.hidden || document.webkitHidden) {
cb(true);
} else {
cb(false);
}
}

// 启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束
var count = 0;
var intHandle = null;
intHandle = setInterval(() => {
count++;
var elsTime = +(new Date()) - clickTime;
if (count >= 100 || elsTime > 5000) {
clearInterval(intHandle);
check(elsTime);
}
}, 20);
}

/**
* 唤起app
* @param {any} uri app schema
* @param {any} fallback 唤起失败回调
*/
function openApp(uri, fallback) {
var ifr = document.createElement('iframe');
ifr.src = uri;
ifr.style.display = 'none';
if (fallback) {
checkOpen((opened) => {
if (!opened) {
fallback();
}
});
}
document.body.appendChild(ifr);
setTimeout(() => {
document.body.removeChild(ifr);
}, 5000);
}

if (isAndroid) {
openApp(androidAppUrl)
} else if (isIos) {
window.location.href = iosAppUrl
} else {
}

参考文章

1.h5唤起APP并检查是否成功

2.H5 唤起 APP的解决方案