uniapp 下载强制更新版本功能实现
onLoad(() => {
if (APPCONFIG.force_update) {
getVersion()
}
})
/**
* 初始化页面,默认从本地缓存中获取数据
* @param {Boolean} force 是否强制从接口获取数据
* @return undefined
*/
const init = (force = false) => {
state.successCount = 0
/* getRulesData(force)
getMyMsgData()
uni.stopPullDownRefresh() */
}
const getVersion = () => {
getOnlineUpdateInfoIF({appFlag:'civicism'}).then((res) => {
state.apkSize = res.content.apkSize
console.log(needInstall(state.appDetails.appVersion, res.content.verName))
if (needInstall(state.appDetails.appVersion, res.content.verName)) {
// 检测到新版本
// uni.showToast({
// icon: 'none',
// duration: 1000,
// title: '检测到新版本,下载成功后将安装新版本!'
// })
state.hasNewVersion = true
state.newVersionInfo = res.content
if(state.apkSize){
downloadNewApp()
}
}
})
}
const downloadNewApp = () => {
// #ifdef APP-PLUS
// 开启下载任务
// uni.showToast({
// icon: 'none',
// duration: 2000,
// title: '开始下载V' + state.newVersionInfo.verName + '版本'
// })
if (state.isLoading) {
processPopup.value.open()
return null
}
state.isLoading = true
var dtask = plus.downloader.createDownload(
state.newVersionInfo.updateurl+'?appFlag=civicism',
{
method: 'GET'
},
(d, status) => {
clearInterval(timer)
hideDialog()
state.isLoading = false
if (status === 200) {
uni.showToast({
icon: 'none',
duration: 2000,
title: '下载成功'
})
console.log('下载成功安装: ' + d.filename)
plus.runtime.install(d.filename)
} else {
plus.nativeUI.alert('安装失败,请稍候重试: ' + status)
}
}
)
dtask.start()
processPopup.value.open()
// 关于进度的获取是使用定时器不断获取已经下载的文件的大小,再对比总大小即可
let timer = setInterval(() => {
console.log('downloadedSize', dtask.downloadedSize)
let downPercent = ((dtask.downloadedSize / state.apkSize) * 100).toFixed(2)
if (downPercent >= 100) {
downPercent = 100
clearInterval(timer)
hideDialog()
}
state.downPercent = downPercent
}, 500)
// #endif
// #ifndef APP-PLUS
// processPopup.value.open()
// state.downPercent = 40.00
// #endif
}
const hideDialog = () => {
processPopup.value.close()
}
作者:freddyhuang
出处:https://www.cnblogs.com/freddyhuang
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号