赞
踩
//启动app方法
function startApp(url, url2) {
//url是跳转的scheme地址,这个建议下个反编译的软件,去第三方apk查他们设置的scheme_url和scheme_host是什么,我就是这样干的
//url2是应用下载地址,要分清ios和android的不一样
//将下载地址保存到全局变量
downloadUrl = url2;
if (ua.match(/ipad|iphone|ipod|ios/i)) {
//外部一个定时器,专门盯着启动app的定时器loop;就叫它killer吧
//计时6秒,之后干掉loop.
window.setTimeout(function() {
$('#message').html('');
$('.result-message').eq(0).css("display", "none");
clearTimeout(loop);
time = parseInt('6000') / 1000;
}, 6000);
//尝试启动应用
location.href = url;
//同时开始应用启动倒计时
countDown();
} else {
//安卓的就是用iframe来测试是否安装和启动应用了
window.setTimeout(function() {
$('#message').html('');
$('.result-message').eq(0).css("display", "none");
clearTimeout(loop);
time = parseInt('6000') / 1000;
}, 6000);
//创建iframe并启动应用入口
openApp(url);
}
}
function openApp(src) {
// 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP
ifr.src = src;
ifr.style.display = 'none';
document.body.appendChild(ifr);
//切换到iframe时
//此时,会有个问题,如后切换到应用时间小于killer所需要杀死loop的时间,loop就会跳到下载提示,killer`就失去作用了
countDown();
window.setTimeout(function() {
document.body.removeChild(ifr);
}, 5000);
//倒计时
}
function countDown() {
//每秒调用一次
loop = window.setTimeout('countDown()', 1000);
if (time > 0) {
$('.result-message').eq(0).css("display", "block");
$('#message').html('正在尝试打开客户端 ' + time + 's');
time--;
if (time == 0) {
/*if(ua.match(/ipad|iphone|ipod|ios/i)){
console.log(downloadUrl);
location.href = downloadUrl;
}*/
//如果计时到0,loop任然没被干掉,就说明应用没有启动,此时,跳到下载提示界面
//定时器的局限性还是很大,不能响应式反应,所以只能做到这一步了
$('#message').html('');
$('.result-message').eq(0).css("display", "none");
clearTimeout(loop);
time = parseInt('6000') / 1000;
var btnArray = ['否', '是'];
mui.confirm('您没有安装该应用,是否下载安装包?', '应用下载', btnArray, function(e) {
if (e.index == 1) {
location.replace(downloadUrl);
} else {
return;
}
});
}
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。