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; } }) } } });
网友回复
如何编写一个chrome插件实现多线程高速下载大文件?
cdn版本的vue在网页中出现typeerror错误无法找到错误代码位置怎么办?
pywebview能否使用webrtc远程控制共享桌面和摄像头?
pywebview6.0如何让窗体接受拖拽文件获取真实的文件路径?
如何在linux系统中同时能安装运行apk的安卓应用?
python有没有离线验证码识别ocr库?
各家的ai图生视频及文生视频的api价格谁最便宜?
openai、gemini、qwen3-vl、Doubao-Seed-1.6在ui截图视觉定位这款哪家更强更准?
如何在linux上创建一个沙箱隔离的目录让python使用?
pywebview如何使用浏览器自带语音识别与webspeech 的api?