为防止出现字符串比较不准确的情况例如
3.1.10与3.2.1 通过字符串比较是3.1.10为大,所以为了避免这种情况发生采用逐个字符比较的方式比较。
如下面代码所示:
this.appVersion.getVersionNumber().then((value: any) => {
this.http.get(jsonUrl + new Date().getTime(), (res) => {
const versionTxt = JSON.parse(JSON.stringify(res));
that.appVersion.getPackageName().then((name: any) => {
let appVersionObj: any;
appVersionObj = versionTxt[name];
console.log('appVersionObj is ' + appVersionObj.version);
// 修复发布版本出现比较异常的bug
const localVersionArray = value.split('.');
const serverVersionArray = appVersionObj.version.split('.');
if (parseInt(serverVersionArray[0], 10) > parseInt(localVersionArray[0], 10)) {// 第一位
that.showUpdate(appVersionObj);
} else if (parseInt(serverVersionArray[0], 10) === parseInt(localVersionArray[0], 10)) {
if (parseInt(serverVersionArray[1], 10) > parseInt(localVersionArray[1], 10)) { // 第二位
that.showUpdate(appVersionObj);
} else if (parseInt(serverVersionArray[1], 10) === parseInt(localVersionArray[1], 10)) {
if (parseInt(serverVersionArray[2], 10) > parseInt(localVersionArray[2], 10)) { // 第三位
that.showUpdate(appVersionObj);
}
} else {
// 服务器第二位小于本地第二位
}
} else {
// 服务器第一位小于本地第一位
}
});
}, (error) => {
console.log('msg-----> 更新版本号:' + JSON.stringify(error));
}, 'true');
}).catch(err => {
console.log('msg-----> getVersionNumber:' + err);
});