uu
This commit is contained in:
parent
b1574ff8ca
commit
65e7250cca
@ -1,24 +1,29 @@
|
||||
import { confirmModal, showLoading, hideLoading, showToast } from "@/common/untool"
|
||||
import {
|
||||
confirmModal,
|
||||
showLoading,
|
||||
hideLoading,
|
||||
showToast
|
||||
} from "@/common/untool"
|
||||
import * as apiService from "@/common/api"
|
||||
|
||||
export const getSystemInfo = ()=> {
|
||||
export const getSystemInfo = () => {
|
||||
let info = uni.getSystemInfoSync()
|
||||
console.log('getSystemInfo=====', info)
|
||||
return info
|
||||
}
|
||||
|
||||
export const getCurrentAppInfo = ()=> {
|
||||
return new Promise((resolve, reject)=> {
|
||||
export const getCurrentAppInfo = () => {
|
||||
return new Promise((resolve, reject) => {
|
||||
// 保存 app 版本信息
|
||||
// #ifdef APP-PLUS
|
||||
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo)=> {
|
||||
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
|
||||
console.log('plus.runtime.appid=========', plus.runtime.appid);
|
||||
console.log('widgetInfo=========', widgetInfo);
|
||||
console.log('widgetInfo=========', widgetInfo);
|
||||
widgetInfo._appVersion = `${widgetInfo.version}.${widgetInfo.versionCode}`
|
||||
resolve(widgetInfo)
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
|
||||
|
||||
// #ifndef APP-PLUS
|
||||
// TODO MOCK数据
|
||||
resolve({})
|
||||
@ -26,52 +31,66 @@ export const getCurrentAppInfo = ()=> {
|
||||
})
|
||||
}
|
||||
|
||||
const installNewApk = (url)=> {
|
||||
const installNewApk = (url) => {
|
||||
console.log("installNewApk url===", url)
|
||||
return new Promise((resolve, reject)=> {
|
||||
return new Promise((resolve, reject) => {
|
||||
showLoading('正在下载资源文件,请稍等...')
|
||||
let downInstance = uni.downloadFile({
|
||||
url: url,
|
||||
success: (downloadResult) => {
|
||||
console.log("===downloadResult===", downloadResult)
|
||||
hideLoading()
|
||||
if (downloadResult.statusCode === 200) {
|
||||
if (downloadResult.statusCode === 200) {
|
||||
showLoading('正在安装...')
|
||||
plus.runtime.install(downloadResult.tempFilePath, {
|
||||
force: true
|
||||
}, function() {
|
||||
// #ifdef APP-PLUS
|
||||
plus.runtime.install(downloadResult.tempFilePath, {
|
||||
force: true
|
||||
}, function() {
|
||||
hideLoading()
|
||||
console.log('install success...');
|
||||
plus.runtime.restart();
|
||||
console.log('install success...');
|
||||
plus.runtime.restart();
|
||||
resolve()
|
||||
}, function(e) {
|
||||
}, function(e) {
|
||||
hideLoading()
|
||||
console.error('install fail...');
|
||||
console.error('install fail...');
|
||||
reject()
|
||||
});
|
||||
} else {
|
||||
});
|
||||
// #endif
|
||||
} else {
|
||||
showToast(`文件下载失败, 错误码:${downloadResult.statusCode}`)
|
||||
reject()
|
||||
}
|
||||
},
|
||||
fail: (err)=> {
|
||||
fail: (err) => {
|
||||
console.log('download file err...', err);
|
||||
showToast("文件下载失败")
|
||||
hideLoading()
|
||||
}
|
||||
});
|
||||
downInstance.onProgressUpdate((res)=> {
|
||||
let { totalBytesExpectedToWrite, totalBytesWritten } = res
|
||||
downInstance.onProgressUpdate((res) => {
|
||||
let {
|
||||
totalBytesExpectedToWrite,
|
||||
totalBytesWritten
|
||||
} = res
|
||||
let percent = (totalBytesWritten / totalBytesExpectedToWrite) * 100
|
||||
// showLoading(`下载进度:${parseInt(percent)}%`)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const getLastAppInfo = async (curAppInfo)=> {
|
||||
let { version, versionCode } = curAppInfo
|
||||
let { deviceId } = getSystemInfo()
|
||||
let res = await apiService.getLastAppVersion({ version, versionCode, deviceId })
|
||||
const getLastAppInfo = async (curAppInfo) => {
|
||||
let {
|
||||
version,
|
||||
versionCode
|
||||
} = curAppInfo
|
||||
let {
|
||||
deviceId
|
||||
} = getSystemInfo()
|
||||
let res = await apiService.getLastAppVersion({
|
||||
version,
|
||||
versionCode,
|
||||
deviceId
|
||||
})
|
||||
console.log("getLastAppInfo res====", res)
|
||||
// res.data = {
|
||||
// version: '1.0.0',
|
||||
@ -84,25 +103,25 @@ const getLastAppInfo = async (curAppInfo)=> {
|
||||
return res.data
|
||||
}
|
||||
|
||||
const compareInfo = (curAppInfo, lastAppInfo)=> {
|
||||
let hasNewVersion = false
|
||||
const compareInfo = (curAppInfo, lastAppInfo) => {
|
||||
let hasNewVersion = false
|
||||
let url = ''
|
||||
// 强制更新app
|
||||
if(lastAppInfo.version && curAppInfo.version != lastAppInfo.version) {
|
||||
if (lastAppInfo.version && curAppInfo.version != lastAppInfo.version) {
|
||||
hasNewVersion = true
|
||||
url = lastAppInfo.apkUrl
|
||||
}
|
||||
// 热更新
|
||||
if(!url && lastAppInfo.versionCode && curAppInfo.versionCode != lastAppInfo.versionCode) {
|
||||
if (!url && lastAppInfo.versionCode && curAppInfo.versionCode != lastAppInfo.versionCode) {
|
||||
hasNewVersion = true
|
||||
url = lastAppInfo.wgtUrl
|
||||
}
|
||||
// 判断是否走白名单更新
|
||||
if(url && lastAppInfo.whiteDeviceIds?.length > 0) {
|
||||
if (url && lastAppInfo.whiteDeviceIds?.length > 0) {
|
||||
let sysInfo = getSystemInfo()
|
||||
hasNewVersion = lastAppInfo.whiteDeviceIds.indexOf(sysInfo?.deviceId) > -1
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
hasNewVersion,
|
||||
url,
|
||||
@ -110,7 +129,7 @@ const compareInfo = (curAppInfo, lastAppInfo)=> {
|
||||
}
|
||||
}
|
||||
|
||||
export const getCompareVersion = async()=> {
|
||||
export const getCompareVersion = async () => {
|
||||
let curAppInfo = await getCurrentAppInfo()
|
||||
let lastAppInfo = await getLastAppInfo(curAppInfo)
|
||||
let cmpRes = await compareInfo(curAppInfo, lastAppInfo)
|
||||
@ -118,13 +137,40 @@ export const getCompareVersion = async()=> {
|
||||
return cmpRes
|
||||
}
|
||||
|
||||
export const checkUpdate = async ()=> {
|
||||
export const checkUpdate = async () => {
|
||||
// app升级检测
|
||||
// #ifdef APP-PLUS
|
||||
let cmpRes = await getCompareVersion()
|
||||
if(cmpRes.hasNewVersion) {
|
||||
let fmBl = await confirmModal(`app最新版本:${cmpRes.lastAppInfo.version}.${cmpRes.lastAppInfo.versionCode}, 是否更新?`)
|
||||
if(fmBl) {
|
||||
if (cmpRes.hasNewVersion) {
|
||||
let fmBl = await confirmModal(
|
||||
`app最新版本:${cmpRes.lastAppInfo.version}.${cmpRes.lastAppInfo.versionCode}, 是否更新?`)
|
||||
if (fmBl) {
|
||||
await installNewApk(cmpRes.url)
|
||||
}
|
||||
}
|
||||
return cmpRes
|
||||
// #endif
|
||||
|
||||
//微信小程序检测
|
||||
// #ifdef MP-WEIXIN
|
||||
if (wx.canIUse('getUpdateManager')) { //判断当前微信版本是否支持版本更新
|
||||
const updateManager = wx.getUpdateManager();
|
||||
updateManager.onCheckForUpdate(async function(res) {
|
||||
if (res.hasUpdate) { // 请求完新版本信息的回调
|
||||
updateManager.onUpdateReady(async function() {
|
||||
let cbl = await confirmModal('新版本已经准备好,是否重启应用?')
|
||||
if (cbl) { // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||
updateManager.applyUpdate()
|
||||
}
|
||||
});
|
||||
updateManager.onUpdateFailed(function() {
|
||||
showToast('新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~')
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
showToast('当前微信版本过低,无法使用新功能,请升级到最新微信版本后重试。')
|
||||
}
|
||||
// #endif
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user