通过手机浏览器打开app或者跳转到下载页面以下仅展示最简单的例子及关键代码
由于硬件条件有限,仅测试了 android 下的情况
添加 schemes在 hbuilder 创建的移动 app 项目下有 manifest.json 文件,在里面添加 schemes,schemes 中的值你喜欢设置成什么就什么吧。
网页设置这个时候,你需要一个简单 web 系统,能提供一个简单的 web 页面供手机浏览器访问。
这个做过 java 的人都懂,不详说了。
<!doctype html>
<html xmlns:th="http://www.thymeleaf.org"><head><meta charset="utf-8" />
<title>文档标题</title>
</head>
<body>
<p style="font-size: 68px;">
<a href="javascript:open_or_download_app();">打开app</a>
<span id="device"></span>
</p>
<script type="text/javascript">
//<![cdata[
function open_or_download_app() {
var device = document.getelementbyid("device");
if (navigator.useragent.match(/(iphone|ipod|ipad);?/i)) {
device.innerhtml = "ios设备";
// 判断useragent,当前设备为ios设备
var loaddatetime = new date();
// 设置时间阈值,在规定时间里面没有打开对应app的话,直接去app store进行下载。
window.settimeout(function() {
var timeoutdatetime = new date();
if (timeoutdatetime - loaddatetime <2200) {
window.location = "xxxxxxxx"; // app下载地址
} else {
window.close();
}
},2000);
window.location = "apptest://apptest";//ios端url schema
} else if (navigator.useragent.match(/android/i)) {
device.innerhtml = "android设备";
// 判断useragent,当前设备为android设备
// 判断useragent,当前设备为ios设备
var loaddatetime = new date();
// 设置时间阈值,在规定时间里面没有打开对应app的话,直接去app store进行下载。
window.settimeout(function() {
var timeoutdatetime = new date();
if (timeoutdatetime - loaddatetime < 2200) {
window.location = "xxxxxxxx"; // app下载地址
} else {
window.close();
}
},2000);
window.location = "apptest://apptest";// android端url schema
}
}
//]]>
</script>
</body>
</html>
android 的 url schema 写成 “你设置的schema://你设置的schema” 即可访问。ios 的和这个不同。url schema 的详解自行百度,你会有更深的理解。
根据参考,即使在后台打开了 app,js 仍会执行一段时间,大概是 600 - 1000 毫秒,所以至少也要设置定时调度大于 1 秒,这样比较有保证。
window.settimeout(function() {},2000); // 需要设置大一点,才有效果,否则会始终执行
接下来就可以打包 app 安装到手机上进行测试,也可以删掉 app,对比两次的结果。
ios 的有条件再补上
以上就是通过手机浏览器打开app或者跳转到下载页面的实现的详细内容。