mrr.sj.front/utils/uploadApp.js

175 lines
4.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import request from "./request";
let version_number;
function getVersionNum() {
// 获取当前app的版本
const systemInfo = uni.getSystemInfoSync();
// 应用程序版本号
// 条件编译只在APP渲染
// #ifdef APP
version_number = systemInfo.appWgtVersion;
// #endif
// #ifdef H5
version_number = systemInfo.appVersion;
console.log(systemInfo.appVersion, '版本号');
// #endif
// #ifdef MP-WEIXIN
const accountInfo = uni.getAccountInfoSync();
version_number = accountInfo.miniProgram.version // 小程序 版本号
console.log(accountInfo.miniProgram.version, '小程序版本号')
// #endif
return version_number;
}
// 检查版本自动更新
function getUpdateInfo() {
return new Promise(async (resolve, reject) => {
const systemInfo = await uni.getSystemInfoSync();
// 获取手机型号
const deviceBrand = systemInfo.deviceBrand;
console.log('deviceBrand', deviceBrand)
let type = deviceBrand == 'apple' ? '1' : deviceBrand == 'huawei' ? '2' : deviceBrand == 'honor' ?
'3' : deviceBrand == 'xiaomi' ? '4' : deviceBrand == 'oppo' ? '5' : deviceBrand == 'vivo' ?
'6' : '';
if (!type) return;
const response = await request.post('/user/getappversion', {
type
});
console.log('response', response)
resolve({
version: response.data.version,
downloadUrl: response.data.url // APK下载地址
})
})
}
function installApp(downloadUrl) {
// 下载APK
const downloadTask = uni.downloadFile({
url: 'https://app.mrrweb.com.cn/mrrapp.com.1.1.4.apk',
success: (downloadResult) => {
console.log('downloadResult', downloadResult)
if (downloadResult.statusCode === 200) {
// 安装APK
plus.runtime.install(downloadResult.tempFilePath, {
force: false
}, () => {
console.log('安装成功')
// plus.runtime.restart();
}, (err) => {
console.log('err', err)
uni.showToast({
title: '安装失败',
icon: 'none'
})
})
}
},
fail(err) {
console.log('err', err)
}
})
// 监听下载进度
downloadTask.onProgressUpdate((res) => {
console.log('下载进度:', res.progress)
})
}
// 建议的版本比较函数
function compareVersion(current, latest) {
const curParts = current.split('.').map(Number);
const latParts = latest.split('.').map(Number);
for (let i = 0; i < Math.max(curParts.length, latParts.length); i++) {
const cur = curParts[i] || 0;
const lat = latParts[i] || 0;
if (cur < lat) return true;
if (cur > lat) return false;
}
return false;
}
// app内跟新下载
function uploadAppDowlond(url) {
const downloadTask = uni.downloadFile({
url: 'http://app.mrrweb.com.cn/mrrapp.com.1.1.4.apk',
success: downloadResult => {
if (downloadResult.statusCode === 200) {
plus.runtime.install(
downloadResult.tempFilePath, {
force: false
},
function() {
// 下载资源成功,重启应用
plus.runtime.restart()
},
function(e) {
// 下载资源失败
}
)
}
}
})
downloadTask.onProgressUpdate((res) => {
console.log('下载进度' + res.progress);
console.log('已经下载的数据长度' + res.totalBytesWritten);
console.log('预期需要下载的数据总长度' + res.totalBytesExpectedToWrite);
// 满足测试条件,取消下载任务。
// if (res.progress > 50) {
// downloadTask.abort();
// }
});
}
function showUpdateDialog(updateInfo) {
uni.showModal({
title: `发现新版本`,
content: '是否更新最新版本?',
confirmText: '立即更新',
cancelText: '稍后再说',
success: (res) => {
if (res.confirm) {
// #ifdef APP-PLUS
// if (plus.os.name === 'iOS') {
// plus.runtime.openURL(updateInfo.downloadUrl)
// } else {
// installApp(updateInfo.downloadUrl)
// }
plus.runtime.openURL(updateInfo.downloadUrl)
// #endif
}
}
})
}
export default {
async uploadApp(type) {
// uploadAppDowlond()
try {
const currentVersion = getVersionNum();
if (!currentVersion) return
let updateInfo
// #ifdef APP-PLUS
updateInfo = await getUpdateInfo()
// #endif
console.log('updateInfo', updateInfo)
if (compareVersion(currentVersion, updateInfo.version)) {
showUpdateDialog(updateInfo)
} else {
if (type == 'onLaunch') return;
uni.showToast({
title: '当前已是最新版本',
icon: 'none'
})
}
} catch (error) {
console.error('检查更新失败:', error)
uni.showToast({
title: '检查更新失败',
icon: 'none'
})
}
}
}