uniapp版本升级
1.样式
登录进到首页,弹出更新提示框,且不可以关闭,侧边返回直接退出!
有关代码:
<uv-popup ref="popupUpdate" round="8" :close-on-click-overlay="false">
<view style="width: 450rpx; display: flex; flex-direction: column; align-items: center; padding: 20rpx 0 50rpx 0">
<text style="font-size: 23px">提示</text>
<text style="font-size: 18px; margin-top: 20rpx">发现新版本,立即升级!</text>
<view style="margin-top: 30rpx">
<uv-button size="normal" type="primary" @click="sureUpdate" :customStyle="{ width: '300rpx' }">确认</uv-button>
</view>
</view>
</uv-popup>
2.操作代码
const sureUpdate = () => {
showFly(true, '');
};
const showFly = (isShowCancel, url) => {
if (true) {
// clearInterval(updateAction)
uni.showLoading({
title: '更新中……'
});
try {
const appUrl = config.appDownloadUrl;
const downloadTask = uni.downloadFile({
url: appUrl, // 这个是最新版本apk包的地址
success: (res) => {
uni.hideLoading();
if (res.statusCode === 200) {
console.log('res.tempFilePath :>> ', res.tempFilePath);
plus.runtime.install(
res.tempFilePath,
{
force: true
},
(_res) => {
uni.showToast({
title: '更新成功,重启中',
duration: 1600
});
popupUpdate.value.close();
plus.runtime.restart();
uni.hideToast();
}
);
} else {
uni.showToast({
title: '下载失败!',
icon: 'none',
duration: 800
});
}
}
});
// 下载进度
downloadTask.onProgressUpdate((res) => {
// _this.startDown = true;
// _this.calcPro(res.progress);
console.log('下载进度' + res.progress);
// console.log('已经下载的数据长度' + res.totalBytesWritten);
// console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// // 测试条件,取消下载任务。
// if (res.progress > 50) {
// downloadTask.abort();
// }
});
} catch (error) {
console.log('error :>> ', error);
uni.hideLoading();
} finally {
}
}
};
2.是否更新
在进到首页最重要的一环就是判断系统是否需要更新,在onShow里使用
如果接口返回的版本>系统现在本身的版本号,那么就弹出提示框!
nextTick(() => {
// popupUpdate.value.open();
isUpdate();
});
const isUpdate = () => {
const WXP_APP_VERSION = uni.getStorageSync('appVersion');
const curVersion = uni.getStorageSync('version'); // 当前版本
let str = WXP_APP_VERSION.split('.').join('');
let str1 = curVersion.split('.').join('');
console.log(Number(str));
console.log(Number(str1));
if (curVersion && WXP_APP_VERSION) {
if (Number(str) > Number(str1)) {
popupUpdate.value.open();
} else {
popupUpdate.value.close();
}
} else {
popupUpdate.value.close();
}
};