首先分析需求
我们要想实现这个自动更新的功能大致分三步:
1.查询线上版本号,然后拿本地版本号与之对比。
2. 若线上版本号比本地版本号大,则下载线上版本。
3. 把下载好版本安装,并替换当前旧版本。
代码实现
判断用户手机系统
let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
如果是安卓系统的话,获取线上版本号和本地版本号对比
this.$axios.get('/get/getAppVersion', {
}).then((res) => {
const { message, data, status } = res
if (status == 200 && data.code == 200) {
const { version, url ,text} = data.data
this.wgtUrl = url
console.log("地址", this.wgtUrl)
if (this.banben == version) {
this.isUptoDate = true //线上版本与本地版本相同
} else { //有更新版本
this.isUptoDate = false
this.banben = version
this.text=text
plus.nativeUI.confirm("确定下载更新?", function (e) {
if (e.index == 0) {
that.downLoad(); // 执行下载函数
} else { }
}, "检测到最新版本", ["下载", "取消"]);
}
}
})
下载函数
downLoad() {
let that = this
const wgtUrl = this.wgtUrl
plus.nativeUI.showWaiting("下载更新");
plus.downloader.createDownload(wgtUrl, { filename: "_doc/update/" }, function (d, status) {
if (status == 200) {
console.log("下载更新成功:" + d.filename);
that.installWgt(d.filename); // 安装wgt资源包
} else {
console.log("下载更新失败!");
plus.nativeUI.toast("下载更新失败!");
}
plus.nativeUI.closeWaiting();
}).start();
},
安装函数
installWgt(path) {
plus.nativeUI.showWaiting("安装更新");
plus.runtime.install(path, {}, function () {
plus.nativeUI.closeWaiting();
console.log("安装更新成功!");
plus.nativeUI.alert("更新完成!", function () {
plus.runtime.restart(); //安装成功后重启应用
});
}, function (e) {
plus.nativeUI.closeWaiting();
console.log("安装更新失败![" + e.code + "]:" + e.message);
plus.nativeUI.toast("安装更新失败!");
});
}