UNI-APP APP更新(整包更新与热更新)

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"

}

}


UNI-APP APP更新(整包更新与热更新)_第1张图片


参数名称:

1.updateType更新类型(0热更新,1整包更新)

2.appVersion    APP版本

3.wgtUdateUrl  wgt(热更新资源包)下载地址

4.downloadUrl整包更新下载地址

注意:

APP版本号均要大于前一个版本号

一定大于上一个版本(部分手机无法降级安装安装包)


UNI-APP APP更新(整包更新与热更新)_第2张图片

wgt资源包生成:    


UNI-APP APP更新(整包更新与热更新)_第3张图片



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)

})

需要在哪更新就放在哪里

你可能感兴趣的:(UNI-APP APP更新(整包更新与热更新))