1.服务端数据格式
{
"android":{
"updateType":0,
"appVersion":"1.0.0",
"wgtUdateUrl":"http://10.168.10.1/app.wgt",
"downloadUrl":"https://www.lanzous.com/game"
},
"ios":{
"updateType":0,
"appVersion":"1.3.0",
"wgtUdateUrl":"http://106.13.40.12/__UNI__1EA9FB7.wgt",
"downloadUrl":"https://www.lanzous.com/game-ios"
}
}
参数名称:
1.updateType更新类型(0热更新,1整包更新)
2.appVersion APP版本
3.wgtUdateUrl wgt(热更新资源包)下载地址
4.downloadUrl整包更新下载地址
注意:
APP版本号均要大于前一个版本号
一定大于上一个版本(部分手机无法降级安装安装包)
wgt资源包生成:
2.客户端(APP端)
//APP更新
export function appUdate(appInfo) {
let appVersion = appInfo.version.replace(/[.]/g, "") //当前版本号
let appName = appInfo.name //app名字
let phoneOS = uni.getSystemInfoSync().platform
uni.request({
url: 'http://***********',
//url: '',
method: 'GET',
success: res => {
let androidUdateFile = res.data.android //安卓更新文件
let iosUdateFile = res.data.ios //ios更新文件
// let updateFile = {}
let updateFile = phoneOS == "android" ? androidUdateFile : iosUdateFile
console.log(updateFile)
// if (phoneOS === "android") {
// updateFile = androidUdateFile
// } else {
// updateFile = iosUdateFile
// }
if (updateFile.appVersion.replace(/[.]/g, "") > appVersion) {
if (updateFile.updateType) {
packageDownload(updateFile) //整包更新
} else {
wgtDownload(updateFile) //wgt更新
}
}
},
fail: () => {
},
});
}
//热更新
function wgtDownload(fileInfo) {
const downloadTask = uni.downloadFile({
url: fileInfo.wgtUdateUrl,
success: (downloadResult) => {
if (downloadResult.statusCode === 200) {
uni.showModal({
title: "提示",
content: '软件更新完成,是否重启应用?',
success: res => {
if (res.confirm) {
(downloadResult.tempFilePath, {
force: false
}, function() {
console.log('install success...');
plus.runtime.restart();
}, function(e) {
console.error('install fail...');
});
}
}
});
}
}
});
downloadTask.onProgressUpdate((res) => {
console.log('下载进度' + res.progress);
})
}
//整包更新
function packageDownload(fileInfo) {
uni.showModal({
title: "提示",
content: `测到有最新版本${fileInfo.appVersion},是否确认更新?`,
success: function(res) {
if (res.confirm) {
plus.runtime.openURL(fileInfo.downloadUrl) //整包下载
}
}
});
}
一般封装成一个js import引入就行
本人在App.vue文件
onLaunch里面执行以下代码
plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
appUdate(wgtinfo)
})
需要在哪更新就放在哪里