开发app时,每次更新是很头疼的一件事,尤其是有些需要让到指定平台下载的,每次都还要审核好久,因此推荐一个无需更换apk/ipa的的热更新方式:wgt包热更新
使用wgt热更新首先要保证自己线上已经有个正式apk、ipa的下载地址,主要用于常规下载,且保证打包的wgt的manifest.json的配置和之前的一致(版本号除外,版本号每次要比之前的大)


首先要获取当前的应用版本号,然后根据和后端的配合进行处理~
我这边是通过返回的版本号提交给后端,后端有记录最新的版本号进行区分,能够更新就返回给我新版本信息(包含wgt包的地址之类的信息)
//#ifdef APP-PLUS
// 获取本地应用资源版本号
uni.getSystemInfo({
success: (res) => {
that.post('/api/index/getAppVersion', {
version: res.appWgtVersion
}).then(res => {
that.newVerisonInfo = res
})
}
})
//#endif
根据返回信息有了新包的内容,就弹出更新的弹窗,这个根据自己的ui进行完善,最后执行的下载就不需要区分安卓或ios,因为这个wgt包都能够识别并下载~()
downLoadApp(){
var that = this
that.progress = true // progress 进度条看ui实际情况选择加不加
var downloadTask = uni.downloadFile({ //执行下载
url: '更换自己的下载地址', // 下载地址
success: downloadResult => {
if (downloadResult.statusCode == 200) {
plus.runtime.install(
downloadResult.tempFilePath, {
force: true //true表示强制安装,不进行版本号的校验;false则需要版本号校验(即wgt的版本号要大于当前app版本号即可)
},
function() {
that.progress = false // 关闭下载进度弹窗
uni.showModal({
title: '下载成功',
content: '更新成功,请重启应用',
showCancel: false,
success: function(res) {
if (res.confirm) {
plus.cache.clear();
plus.runtime.restart();
}
}
})
}
);
}
},
fail: (err) => {
that.progress = false // 关闭下载进度弹窗
},
});
// 监听下载进度
downloadTask.onProgressUpdate((res) => {
that.downLoadPercentage = res.progress
});
}
如若wgt包的配置文件进行改变,则会出现可以下载没有安装的情况~(本人实测,apk包的配置没有包含share的配置,制作wgt包时添加了share的配置,导致安卓可以正常下载安装,但是ios只能下载,没有安装,后来取消share配置打包的wgt,ios就正常下载安装了)
添加新配置记得要打包apk、ipa进行上传之后,再用wgt包热更新哦~~
1414

被折叠的 条评论
为什么被折叠?



