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;
}
})
}
}
}); 网友回复


