1,打开项目中app.vue文件,在 onLaunch 生命周期内添加如下方法:
版本号uni.request({
url: callback.url, // 请求地址
data: {
version: callback.version, // 传入参数,版本号
},
success: (result) => {
if (result.data.success && result.data.data.url) {
ret.isUpdate = true;
// 全量更新
if (result.data.data.updateType === '0') {
console.log("全量更新");
uni.showModal({ //提醒用户更新
title: "全量更新",
content: `更新提醒:最新版本号${result.data.data.version}`,
success: (res) => {
if (res.confirm) {
console.log("用户点击了确定全量更新");
ret.UpdateOfApk(result)
} else {
console.log("用户点击了取消全量更新");
}
}
})
} else if (result.data.data.updateType === '1') {
console.log("增量更新");
ret.isUpdate = true;
if(result.data.data.force) {
console.log("本次增量更新为强制更新");
ret.UpdateOfWgt(result)
} else {
uni.showModal({ //提醒用户更新
title: "增量更新",
content: `更新提醒:最新版本号${result.data.data.version}`,
success: (res) => {
if (res.confirm) {
console.log("用户点击了确定增量更新");
ret.UpdateOfWgt(result)
} else {
// uni.$emit("noUpdate", {})
console.log("用户点击了取消增量更新");
}
}
})
}
} else {
// ret.isUpdate = false;
console.log("更新类型不是 '0' 或 '1'");
}
}
},
fail: (error) => {
console.log("请求失败:", error);
}
})
2,更新方法
2.1,UpdateOfApk
UpdateOfApk(result) {
const downloadTask = uni.downloadFile({
url: result.data.data.url,
success: (downloadResult) => {
if (downloadResult.statusCode === 200) {
console.log('安装包下载成功,即将安装:' + JSON.stringify(downloadResult,null,4));
plus.runtime.openFile( downloadResult.tempFilePath );
}
}
});
downloadTask.onProgressUpdate((res) => {
uni.$emit("progress", res)
// console.log('下载进度' + progress);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
});
uni.$on("cancelUpdate", ()=> {
console.log("用户点击了取消下载");
downloadTask.abort();
})
}
2.2,UpdateOfWgt
UpdateOfWgt(result) {
uni.downloadFile({
url: result.data.data.url,
success: (downloadResult) => {
if (downloadResult.statusCode === 200) {
console.log("增量更新包下载成功,即将安装: " + JSON.stringify(downloadResult, null, 4));
plus.runtime.install(downloadResult.tempFilePath, {
force: false
}, function() {
console.log("增量更新成功,将重启app");
plus.runtime.restart();
}, function(e) {
console.error('增量更新安装失败:' + JSON.stringify(e));
});
}
}
});
},