java-mall-app/helpers/checkUpdater.js
2024-11-01 16:35:40 +08:00

128 lines
7.2 KiB
JavaScript
Raw Permalink 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 Config from '../config/config'
export function checkUpdater(currentId, updaterPage) {
uni.request({
url: Config.URL.update_app,
method: 'GET',
data: {
"appid": plus.runtime.appid,
"version": plus.runtime.version,
"os": plus.os.name.toLowerCase()
},
success: res => {
if (res.statusCode === 200) {
const response = res.data
const latestId = response.data.version
const method = parseInt(response.data.force)
if (!latestId) {
console.log('当前没有发行版本')
} else if (currentId != latestId && method === 1) {
console.log('确认强制更新,正在取得地址')
// 如果需要背地(静默)热更新,获取下载地址
uni.request({
url: 'https://www.easy-mock.com/mock/5c95e1ac8e241c358386bc16/pure-updater/version/info',
method: 'GET',
data: {
search: 'latestInfo'
},
success: (res) => {
if (res.statusCode === 200) {
console.log('地址请求成功')
const response = res.data
const iosLink = response.latest.info.iosLink
const androidLink = response.latest.info.androidLink
let downloadLink = ''
let ready = false
// 判断系统类型
if (plus.os.name.toLowerCase() === 'android') {
console.log('安卓系统')
if (androidLink && androidLink !== '#') { // 我这里默认#也是没有地址,请根据业务自行修改
console.log('发现下载地址')
// 安卓:创建下载任务
if (androidLink.match(RegExp(/.wgt/))) {
console.log('确认wgt热更新包')
downloadLink = androidLink
ready = true
} else {
console.log('安卓推荐.wgt强制更新.apk的强制更新请您自行修改程序')
}
} else {
console.log('下载地址是空的,无法继续')
}
} else {
console.log('苹果系统')
if (iosLink && iosLink !== '#') { // 我这里默认#也是没有地址,请根据业务自行修改
console.log('发现下载地址')
// 苹果(A)进行热更新如果iosLink是wgt更新包的下载地址判断文件名中是否含有.wgt
if (iosLink.match(RegExp(/.wgt/))) {
console.log('确认wgt热更新包')
downloadLink = iosLink
ready = true
} else {
console.log('苹果只支持.wgt强制更新')
}
} else {
console.log('下载地址是空的,无法继续')
}
}
if (ready) {
console.log('任务开始')
let downloadTask = uni.downloadFile({
url: downloadLink,
success: (res) => {
if (res.statusCode === 200) {
// 保存下载的安装包
console.log('保存安装包')
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
const packgePath = res.savedFilePath
// 保存更新记录到stroage下次启动app时安装更新
uni.setStorage({
key: 'updated',
data: {
completed: false,
packgePath: packgePath
},
success: () => {
console.log('成功保存记录')
}
})
// 任务完成,关闭下载任务
console.log('任务完成,关闭下载任务,下一次启动应用时将安装更新')
downloadTask.abort()
downloadTask = null
}
})
}
}
})
} else {
console.log('下载地址未准备,无法开启下载任务')
}
}
}
})
} else if (currentId != latestId) {
console.log('检测到更新')
uni.showModal({
title: '发现新版本',
content: '有新版本可用 (版本id:' + latestId + '),请问您是否更新?',
success: (res) => {
if (res.confirm) {
uni.navigateTo({
url: updaterPage
})
} else if (res.cancel) {
console.log('取消')
}
}
})
} else {
console.log('现在是最新版本')
}
}
}
})
}