问题描述:当从后台切回前台时,想通过man块来检查是否有更新来修复各种BUG,但发现一些机型无法达到预想的效果,就是rebootApp后没有提示更新。
设计思路如下:当初次安装应用时,切入后台检查一个时间,这时是没有时间的,所以一回到前台立即调用一次检查更新,有就提示更新。当再次将应用切到后台时,从上一次更新的时间开始计时,到再次将应用切回前台,如果上次更新距这次切回前台时间达到的24小时,再次检查更新,以后就是距上次更新每24小时检查一次。
具体实现代码:
function goBackTimeAndCheckUpdate(){ //切入后台 api.addEventListener({ name:'pause' },function(ret,err){ //改在检查更新时记时间,这样可以防止永远不更新的bug,比如设计时间为24小时检查一次,那在这里记时间,我8小时登录一次,就无法检测更新 // $api.setStorage('pauseDate',new Date().format('yyyy/MM/dd hh:mm:ss'));
});
//回到前前 api.addEventListener({ name:'resume' },function(ret,err){ var pauseDate=$api.getStorage('pauseDate'); var d1 = new Date();
if(pauseDate && typeof(pauseDate) != 'undefined'){ var d2 = new Date(Date.parse(pauseDate)); var pauseInterval=Math.round((d1 - d2)/60000);
//大于等于24小时检查更新 1440分,测试方便改成大于1分 if(pauseInterval>=1){ checkUpdate();//检查更新 } }else{ checkUpdate();//检查更新 }
}); }
//检查更新 function checkUpdate() { $api.setStorage('pauseDate',new Date().format('yyyy/MM/dd hh:mm:ss')); var mam = api.require('mam'); mam.checkUpdate(function (ret, err) { if (ret && (ret.status || ret.status == '1')) { var result = ret.result; if (result.update || result.update == 'true') { if (result.closed || result.closed == 'true') { api.rebootApp();//有强制更新时,重启应用,,,,重点在这里,本来有强制更新时,重启应用进行强更,但没有达到实际的效果。。。。。 } else { api.confirm({ title: '更新提示', msg: '版本号:' + result.version + '\n更新描述:' + result.updateTip + '\n发布时间:' + result.time, buttons: ['立即更新', '取消'] }, function (ret, err) { if (ret.buttonIndex == 1) { document.location = result.source; } else { //取消了更新 } }); } } else { //已经是最新版本 } } else { //已经是最新版本 }; });
}
|