提交代码
This commit is contained in:
208
App.vue
208
App.vue
@@ -1,10 +1,11 @@
|
||||
<script>
|
||||
import { queryDictDataCache } from './common/api/dictionary.js'
|
||||
import { getImageUrl } from '@/common/api/basic'
|
||||
import { checkAppUpdate } from './common/js/update.js'
|
||||
|
||||
export default {
|
||||
onLaunch: function () {
|
||||
// this.checkAppUpdate()
|
||||
checkAppUpdate()
|
||||
// uni.onPushMessage((res) => {
|
||||
// console.log("收到推送消息:",res) //监听推送消息
|
||||
// })
|
||||
@@ -27,7 +28,7 @@ export default {
|
||||
engineeringName: '',
|
||||
engineeringId: '', //工程ID
|
||||
projectName: '',
|
||||
projectId:'', //項目ID
|
||||
projectId: '', //項目ID
|
||||
deviceName: '',
|
||||
deviceId: '', //设备ID
|
||||
lineName: '',
|
||||
@@ -47,208 +48,7 @@ export default {
|
||||
console.log('App Hide')
|
||||
},
|
||||
|
||||
methods: {
|
||||
// 1. 检查应用更新(已分平台:安卓 + iOS)
|
||||
checkAppUpdate() {
|
||||
// 开发环境跳过检查
|
||||
const isDev = process.env.NODE_ENV === 'development'
|
||||
if (isDev) {
|
||||
return console.log('开发环境,不执行更新检查')
|
||||
}
|
||||
let isforce = 1
|
||||
// uni.showModal({
|
||||
// title: '更新提示',
|
||||
// content: '发现新版本,是否立即更新?',
|
||||
// showCancel: isforce == '0', // 强制更新隐藏取消按钮
|
||||
// confirmText: '去更新',
|
||||
// success: (modalRes) => {
|
||||
// if (modalRes.confirm) {
|
||||
// this.downloadAndInstallApk('http://112.4.144.18:8040/shiningCloud/file/canneng_wulian.apk')
|
||||
// } else {
|
||||
// }
|
||||
// },
|
||||
// })
|
||||
// 获取当前应用信息
|
||||
plus.runtime.getProperty(plus.runtime.appid, (info) => {
|
||||
const currentVersion = info.version // 当前本地版本号
|
||||
|
||||
// 调用 API 获取服务器上的最新版本信息
|
||||
getLastestVersion()
|
||||
.then((res) => {
|
||||
if (!res.data) {
|
||||
return
|
||||
}
|
||||
const { version, appFileList, iosUrl } = res?.data || {}
|
||||
// let isforce = 1
|
||||
// 版本不一样才更新
|
||||
if (currentVersion != version) {
|
||||
// ==============================================
|
||||
// 🔴 关键:判断手机系统(安卓 / iOS)
|
||||
// ==============================================
|
||||
const isAndroid = plus.os.name === 'Android'
|
||||
const isIos = plus.os.name === 'iOS'
|
||||
|
||||
// ----------------------
|
||||
// ① iOS:跳 App Store
|
||||
// ----------------------
|
||||
if (isIos) {
|
||||
uni.showModal({
|
||||
title: '更新提示',
|
||||
content: '发现新版本,请前往 App Store 更新',
|
||||
showCancel: isforce === '0', // 强制更新隐藏取消按钮
|
||||
confirmText: '去更新',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
// 跳转到 App Store 链接
|
||||
plus.runtime.openURL(iosUrl)
|
||||
|
||||
// 强制更新:退出 App
|
||||
if (isforce !== '0') {
|
||||
plus.runtime.quit()
|
||||
}
|
||||
} else {
|
||||
// 不更新直接退出 App(强制)
|
||||
if (isforce !== '0') {
|
||||
plus.runtime.quit()
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// ----------------------
|
||||
// ② Android:下载安装
|
||||
// ----------------------
|
||||
if (isAndroid) {
|
||||
uni.showModal({
|
||||
title: '更新提示',
|
||||
content: '发现新版本,是否立即更新?',
|
||||
showCancel: isforce === '0', // 强制更新隐藏取消按钮
|
||||
confirmText: '去更新',
|
||||
success: (modalRes) => {
|
||||
if (modalRes.confirm) {
|
||||
// 跳转到 App Store 链接
|
||||
this.downloadAndInstallApk(appFileList[0].filePath)
|
||||
}
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log('获取版本接口失败', err)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 2. 安卓专用:下载并安装 APK
|
||||
downloadAndInstallApk(url) {
|
||||
// 防止重复点击下载
|
||||
if (this.downloadLoading) return
|
||||
this.downloadLoading = true
|
||||
|
||||
uni.showLoading({
|
||||
title: '正在下载更新...',
|
||||
mask: true, // 加遮罩,防止重复点
|
||||
})
|
||||
|
||||
// 下载配置(修复路径、覆盖安装)
|
||||
const options = {
|
||||
filename: '_doc/update/canneng_wulian.apk', // 固定文件名,更稳定
|
||||
timeout: 120, // 超时时间
|
||||
}
|
||||
|
||||
// 创建下载任务
|
||||
const downloadTask = plus.downloader.createDownload(url, options, (downloadedFile, status) => {
|
||||
this.downloadLoading = false
|
||||
uni.hideLoading()
|
||||
|
||||
if (status === 200) {
|
||||
// 开始安装
|
||||
plus.runtime.install(
|
||||
downloadedFile.filename,
|
||||
{
|
||||
force: true, // 强制覆盖安装
|
||||
},
|
||||
() => {
|
||||
uni.showModal({
|
||||
title: '安装成功',
|
||||
content: '请重启APP',
|
||||
showCancel: false,
|
||||
confirmText: '确定',
|
||||
success() {
|
||||
plus.runtime.restart()
|
||||
},
|
||||
})
|
||||
},
|
||||
(e) => {
|
||||
console.error('安装失败', e)
|
||||
uni.showModal({
|
||||
title: '安装失败',
|
||||
content: '请开启安装权限后重试:' + e.message,
|
||||
confirmText: '重试',
|
||||
success: () => {
|
||||
this.downloadAndInstallApk(url)
|
||||
},
|
||||
})
|
||||
},
|
||||
)
|
||||
} else {
|
||||
uni.showModal({
|
||||
title: '下载失败',
|
||||
content: '网络异常或下载链接失效',
|
||||
confirmText: '重试',
|
||||
success: () => {
|
||||
this.downloadAndInstallApk(url)
|
||||
},
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
// 下载进度(优化体验)
|
||||
downloadTask.addEventListener('statechanged', (task) => {
|
||||
if (task.state === 3 && task.totalSize > 0) {
|
||||
const percent = ((task.downloadedSize / task.totalSize) * 100).toFixed(0)
|
||||
uni.showLoading({
|
||||
title: `正在下载更新 ${percent}%`,
|
||||
mask: true,
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
// 开始下载
|
||||
downloadTask.start()
|
||||
},
|
||||
|
||||
// downloadAndInstallApk(url) {
|
||||
// uni.showLoading({ title: '下载新版本...' })
|
||||
|
||||
// const downloadTask = plus.downloader.createDownload(
|
||||
// url,
|
||||
// { filename: '_doc/update/' },
|
||||
// (downloadedFile, status) => {
|
||||
// uni.hideLoading()
|
||||
// if (status === 200) {
|
||||
// plus.runtime.install(
|
||||
// downloadedFile.filename,
|
||||
// { force: true },
|
||||
// () => {
|
||||
// // 安装成功
|
||||
// },
|
||||
// (e) => {
|
||||
// uni.showToast({ title: '安装失败: ' + e.message, icon: 'none' })
|
||||
// },
|
||||
// )
|
||||
// } else {
|
||||
// uni.showToast({ title: '下载失败', icon: 'none' })
|
||||
// }
|
||||
// },
|
||||
// )
|
||||
// downloadTask.start()
|
||||
// },
|
||||
},
|
||||
methods: {},
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user