测试机型:华为、vivo、红米
- 先下载全量包apk,版本号为2.1.4,
- 发布wgt热更新包,版本号为2.1.5,
- app打卡提示更新,更新完毕,重启,有更新的内容,更新成功,app内查看版本号为2.1.5,
- 进入手机系统设置页面,找到该app,查看应用信息,显示版本号还是2.1.4
- 接着在该页面进入app存储目录,删除数据,
- 重启app,又提示更新2.1.5。
wgt热更新没能更新到系统的版本号,如何处理?
// 版本检查
onMounted(() => {
checkVersion(); // 检查是否需要升级
});
const appStore: appType = useApp();
const isUpdateApp = ref(false); // 是否更新app
const versionInfo = ref<VersionType>({}); // 版本信息
appStore.setDeviceInfo(uni.getSystemInfoSync()); // 设备信息
//检查是否需要升级
const checkVersion = () => {
uni.getSystemInfo({
success: (systeminfo) => {
plus.runtime.getProperty(plus.runtime.appid as string, (wgtinfo) => {
// 检查是否需要更新-接口
AppVersionCheckApi({
appType: systeminfo.platform == 'ios' ? 1 : 0, //平台
version: wgtinfo.version //应用版本号
})
.then((res) => {
const data: any = res.data;
if (data.isNeedUpdate === 1) {
//需要更新
emits('updateApp', true);
isUpdateApp.value = true;
versionInfo.value = data;
versionInfo.value.platform = systeminfo.platform;
} else {
emits('updateApp', false);
// 无需更新
appStore.setAppInfo({
version: wgtinfo.version
});
}
})
.catch(() => {
emits('updateApp', false);
});
});
},
fail: () => {
emits('updateApp', false);
}
});
};
// 更新
const updateVersion = () => {
isUpdateApp.value = false;
// #ifdef APP-PLUS
//处理版本更新
updateVersionInfo(versionInfo.value);
//#endif
};
//检查更新版本
const updateVersionInfo = (vdata: any) => {
// #ifdef APP-PLUS
if (vdata && vdata.isNeedUpdate === 1) {
if (vdata.platform == 'ios' && !vdata.wgtPackageUrl) {
//ios
plus.runtime.openURL('****************'); //appstore地址第一次上架后写死
} else {
//Android
let url, packageName;
if (vdata.wgtPackageUrl) {
//热升级包
url = vdata.wgtPackageUrl;
} else {
//整包
url = vdata.wholePackageUrl;
}
let arr = url.split('/');
packageName = arr[arr.length - 1];
if (url) {
updateVersionByWgt(url, packageName);
} else {
uni.showModal({
title: '提示',
content: '更新地址错误,请联系管理员!'
});
}
}
}
// #endif
};
const updateVersionByWgt = (url: string, packageName: any) => {
let dtask;
//下载状态
const onStateChanged = (download: any, status: number) => {
if (download.state == 4 && status == 200) {
uni.hideLoading();
// 下载完成
uni.showLoading({
mask: true,
title: '下载完成,正在安装...'
});
plus.runtime.install(
download.getFileName(),
{
force: false
},
() => {
uni.hideLoading();
uni.showModal({
title: '提示',
content: '安装完成,是否马上重启?',
success: (res) => {
if (res.confirm) {
plus.runtime.restart();
}
}
});
},
(e) => {
uni.hideLoading();
uni.showModal({
title: '提示',
content: '安装失败[' + e.code + ']:' + e.message
});
console.error('install fail...', e.message);
}
);
}
};
// 创建下载任务
const createDownload = () => {
uni.showLoading({
mask: true,
title: '下载新版本...'
});
dtask = plus.downloader.createDownload(getApp().globalData?.basepicpath + url, {
filename: '_doc/app_temp/download/' + packageName
});
dtask.addEventListener('statechanged', onStateChanged, false);
dtask.start();
};
createDownload();
};
mosowe (作者)
你说的是app内显示的版本号用这个吗?热更新不能修改应用中心展示的版本号吗?
2023-03-21 14:32
广州极智
回复 mosowe: 你怎么能修改 应用中心 展示的版本号。。
2023-03-22 15:01