H5页面唤醒高德地图|百度地图App
移动端H5页面唤醒app,若唤醒失败则跳转到应用商城下载。
唤醒前需要检测当前操作系统,不同的操作系统用不同的协议
我这里的需求是唤醒失败就跳转到网页版的地图,若是唤醒失败需要跳转下载的话改一下跳转链接即可。
1.高德完整示例
$(".mapIconBox").on("tap",function(){
if (isAndroid) {
//这个是安卓操作系统
var d = new Date();
var t0 = d.getTime();
window.location.href="androidamap://viewMap?sourceApplication=appname&poiname=abc&lat=36.2&lon=116.1&dev=0";
//判断是否切出浏览器
setTimeout(function(){
let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden
if(typeof hidden =="undefined" || hidden ==false){
//应用宝下载地址
window.location.href ="https://uri.amap.com/marker?position=116.473195,39.993253";
}
}, 2500);
}
if (isIOS) {
//这个是ios操作系统
var d = new Date();
var t0 = d.getTime();
window.location.href="iosamap://viewMap?sourceApplication=appname&poiname=abc&lat=36.2&lon=116.1&dev=0"
//判断是否切出浏览器
setTimeout(function(){
let hidden = window.document.hidden || window.document.mozHidden || window.document.msHidden ||window.document.webkitHidden
if(typeof hidden =="undefined" || hidden ==false){
//应用宝下载地址
window.location.href ="https://uri.amap.com/marker?position=116.473195,39.993253";
}
}, 2500);
}
})
2.百度完整示例
$(".mapIconBox").on("tap",function(){
if (isAndroid) {
//这个是安卓操作系统
var d = new Date();
var t0 = d.getTime();
window.location.href="androidamap://viewMap?sourceApplication=appname&poiname=abc&lat=36.2&lon=116.1&dev=0";
//由于打开需要1~2秒,利用这个时间差来处理--打开app后,返回h5页面会出现页面变成app下载页面,影响用户体验
var delay = setInterval(function(){
var d = new Date();
var t1 = d.getTime();
if( t1-t0<3000 && t1-t0>2000){
window.location.href ="https://uri.amap.com/marker?position=116.473195,39.993253";
}
if(t1-t0>=3000){
clearInterval(delay);
}
},1000);
}
if (isIOS) {
//这个是ios操作系统
var d = new Date();
var t0 = d.getTime();
window.location.href="iosamap://viewMap?sourceApplication=appname&poiname=abc&lat=36.2&lon=116.1&dev=0"
//由于打开需要1~2秒,利用这个时间差来处理--打开app后,返回h5页面会出现页面变成app下载页面,影响用户体验
var delay = setInterval(function(){
var d = new Date();
var t1 = d.getTime();
if( t1-t0<3000 && t1-t0>2000){
window.location.href ="https://uri.amap.com/marker?position=116.473195,39.993253";
}
if(t1-t0>=3000){
clearInterval(delay);
}
},1000);
}
})
总结:
1.百度地图需要判断是否切出浏览器,高德地图需要做反应时间判断
2.当H5页面跳转到高德地图后下面的js将不再执行,所以判断是否切出浏览器即可。
3.当H5页面跳转到百度地图APP后下面的js依旧会执行,所以要判断时间。