//common/checkappupdate.js
import { getCurrentVersion } from "@/api/publicCommon.js";//后端获取版本号的接口
import { handleCleanTmp } from "@/utils/common.js";//清除缓存
function check(param = {}) {
// 合并默认参数
param = Object.assign({
title: "检测到有新版本!",
content: "请升级app到最新版本!",
canceltext: "暂不升级",
oktext: "立即升级"
}, param)
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
let platform = plus.os.name.toLocaleLowerCase()//获取到手机型号ios
getCurrentVersion().then((result) => {
let data = result.data ? result.data : null;
if (widgetInfo.version === data) {//判断当前版本号和线上是否一样
return;
}
if (data) {
uni.showModal({
title: '提示',
content: '检测到有新版本,是否更新',
success: function (res) {
if (res.confirm) {
if (platform == 'ios') {
// 如果是ios,则跳转到appstore,因为ios不让自动更新。我这是下载地址
plus.runtime.openURL('https://test.fangdadi.com/ios/downloadApp.html')
return;
}
// android进行如下操作
uni.showModal({
title: param.title,
content: data.log ? data.log : param.content,
showCancel: data.force ? false : true,
confirmText: param.oktext,
cancelText: param.canceltext,
success: res => {
if (!res.confirm) {
console.log('取消了升级');
plus.runtime.quit();
}
if (data.shichang === 1) {
//去应用市场更新
plus.runtime.openURL('https://test.fangdadi.com/ios/downloadApp.html');
plus.runtime.restart();
} else {
// 清除缓存
handleCleanTmp()
// 开始下载
// 创建下载任务
var dtask = plus.downloader.createDownload('https://test.fangdadi.com/android/房大地客户系统.apk', {
filename: "_downloads/"
},
function (d, status) {
// 下载完成
if (status == 200) {
plus.runtime.install(d.filename, {
force: true
}, function () {
//进行重新启动;
plus.runtime.restart();
}, (e) => {
uni.showToast({
title: '安装升级包失败:' + JSON
.stringify(e),
icon: 'none'
})
});
} else {
this.tui.toast("下载升级包失败,请手动去站点下载安装,错误码: " +
status);
}
});
let view = new plus.nativeObj.View("maskView", {
backgroundColor: "rgba(0,0,0,.6)",
left: ((plus.screen.resolutionWidth / 2) - 45) +
"px",
bottom: "80px",
width: "90px",
height: "30px"
})
view.drawText('开始下载', {}, {
size: '12px',
color: '#FFFFFF'
});
view.show()
dtask.addEventListener("statechanged", (e) => {
if (e && e.downloadedSize > 0) {
let jindu = ((e.downloadedSize / e.totalSize) *
100).toFixed(2)
view.reset();
view.drawText('进度:' + jindu + '%', {}, {
size: '12px',
color: '#FFFFFF'
});
}
}, false);
dtask.start();
}
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
})
});
}
export default {
check
}
//App.vue
import checkappupdate from "common/checkappupdate.js";
onLaunch: function () {
this.initApp();
// #ifdef APP-PLUS
checkappupdate.check({
title: "检测到有新版本!",
content: "请升级app到最新版本!",
canceltext: "暂不升级",
oktext: "立即升级",
});
// #endif
},