首先分析需求
我们要想实现这个自动更新的功能大致分三步:
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 } = resif (status == 200 && data.code == 200) {const { version, url ,text} = data.datathis.wgtUrl = urlconsole.log("地址", this.wgtUrl)if (this.banben == version) {this.isUptoDate = true //线上版本与本地版本相同} else { //有更新版本this.isUptoDate = falsethis.banben = versionthis.text=textplus.nativeUI.confirm("确定下载更新?", function (e) {if (e.index == 0) {that.downLoad(); // 执行下载函数} else { }}, "检测到最新版本", ["下载", "取消"]);}}})
下载函数
downLoad() {let that = thisconst wgtUrl = this.wgtUrlplus.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("安装更新失败!");});}
