uniapp更新有两种
整包更新,即常规的整个App安装包重新下载安装。
资源热更新,只对app里面的js等前端代码进行更新,无需重新安装。
整包更新就是启动时请求后台更新接口,将本APP的版本号发送给后台,后台对比有更新就会给出更新的地址
onLaunch: function () { //#ifdef APP-PLUS var server = "https://www.example.com/update"; //检查更新地址 var req = { //升级检测数据 "appid": plus.runtime.appid, "version": plus.runtime.version }; uni.request({ url: server, data: req, success: (res) => { if (res.statusCode == 200 && res.data.status === 1) { uni.showModal({ //提醒用户更新 title: "更新提示", content: res.data.note, success: (res) => { if (res.confirm) { plus.runtime.openURL(res.data.url); } } }) } } }) //#endif }后台
if (plus.os.name=="Android") { appurl = "market://details?id=io.dcloud.hellouniapp"; //这个是通用应用市场,如果想指定某个应用商店,需要单独查这个应用商店的包名或scheme及参数 ,或者直接apk的下载地址 } else{ appurl = "itms-apps://itunes.apple.com/cn/app/hello-uni-app/id1117078253"; }如果是wgt更新
制作wgt包,hbuilder发行-》原生app-制作应用wgt包,然后将wgt包放在自己的服务器后,把访问url地址记下来
app端调用安装wgt包
uni.showModal({ title: "系统提示", content: `当前版本号为(当前版本号),邀您更新版本(最新版本号)`, success: (res) => { //用户确认更新 if (res.confirm) { //使用下载api(uni.downloadFile) let uploadTask = uni.downloadFile({ url: 'wgt包下载地址', success: (downloadResult) => { //使用安装wgtapi(plus.runtime.install) plus.runtime.install( downloadResult.tempFilePath, { force: true }, function () { uni.showModal({ title: '系统提示', content: '新版本已经更新完成,需要重启应用', showCancel: false, //用户点击确认重启 success: function ( res) { if (res .confirm) { 调用重启api(plus.runtime .restart) plus.runtime .restart(); } else if (res .cancel) { console .log( '用户点击取消' ); } } }); } ) } }); //在这里监听用户下载进度 uploadTask.onProgressUpdate((res) => { this.pro = res.progress; console.log(this.pro); if (this.pro == 100) { this.isDown = false; } }) } } });
网友回复