function checkUpdate() {
// 判断升级检测是否过期
var lastcheck = plus.storage.getItem( keyUpdate );
if ( lastcheck ) {
var dc = parseInt( lastcheck );
var dn = (new Date()).getTime();
if ( dn-dc < checkInterval ) { // 未超过上次升级检测间隔,不需要进行升级检查
return;
}
// 取消已过期,删除取消标记
plus.storage.removeItem( keyUpdate );
}
// 读取本地升级文件
dir.getFile( localFile, {create:false}, function(fentry){
fentry.file( function(file){
var reader = new plus.io.FileReader();
reader.onloadend = function ( e ) {
fentry.remove();
var data = null;
try{
data=JSON.parse(e.target.result);
}catch(e){
console.log( "读取本地升级文件,数据格式错误!" );
return;
}
checkUpdateData( data );
}
reader.readAsText(file);
}, function(e){
console.log( "读取本地升级文件,获取文件对象失败:"+e.message );
fentry.remove();
} );
}, function(e){
// 失败表示文件不存在,从服务器获取升级数据
getUpdateData();
});
}
代码是官方update.js里的。用来判断本地版本和服务器版本号的。
我遇到的情况是这样的:
- 打开APP后会认为本地没有升级文件(这是对的)
- 因为没有升级文件(.json)所以会执行 getUpdateData(); 操作,执行后文件下载到本地,但没有进行把新下载好的文件里的版本号和现在版本号对比,所以不会提示版本需要更新。(在 getUpdateData(); 的最后调用 checkUpdate(); 可以解决)
- 再次打开APP后会认为本地有升级文件(.json),所以不会从服务器下载所以会正常提示版本需要更新。
- 第三次打开APP后会因找不到升级文件(.json)进行(2)的操作,就是会再次下载文件到本地,但不会进行版本判断。
不理解为什么要这样呀。。
- 为什么要判断本地有没有升级文件。
- 为什么在“下载服务器上文件”后没有进行版本号判断。
恹心 (作者)
喔 谢了
2015-04-07 11:46