import { ref } from "vue"
class Upgrade {
constructor() {
this.downloadUrl = 'https:XXXXX.apk'
this.progress = ref(0)
}
getLocalVersion = () => {
return new Promise((resolve, reject) => {
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
const version = widgetInfo.version
resolve(version)
})
}).catch(err => {
console.err(err);
})
}
getLatestVersion = () => {
return new Promise((resolve, reject) => {
// 相关接口
const version = '1.0.1'
resolve(version)
}).catch(err => {
console.err(err);
})
}
checkVersion = async () => {
const localVersion = await this.getLocalVersion()
const latestVersion = await this.getLatestVersion()
if (localVersion === latestVersion) {
return true
} else {
return false
}
}
updatePackage = () => {
uni.showModal({
title: '检测到有版本更新!',
content: '请升级app到最新版本!',
cancelText: '暂不升级',
confirmText: '立即升级',
success: res => {
console.log('*载下**');
if (res.confirm) {
this.downloadPackage()
}
}
})
}
downloadPackage = () => {
const task = plus.downloader.createDownload(this.downloadUrl, {},
(res, status) => {
if (status === 200) {
plus.runtime.install(res.filename)
}
})
this.onProgress(task)
task.start()
}
onProgress = (task) => {
task.addEventListener('statechanged', e => {
if (e && e.downloadedSize > 0) {
const progress = ((e.downloadedSize / e.totalSize) * 100).toFixed(2)
this.progress.value = progress
}
}, false)
}
}
export default Upgrade