| | |
| | | import callCheckVersion from './call-check-version' |
| | | |
| | | // 推荐再App.vue中使用 |
| | | const PACKAGE_INFO_KEY = '__package_info__' |
| | | |
| | | export default function() { |
| | | // #ifdef APP-PLUS |
| | | return new Promise((resolve, reject) => { |
| | | callCheckVersion().then(async (e) => { |
| | | if (!e.result) return; |
| | | const { |
| | | code, |
| | | message, |
| | | is_silently, // 是否静默更新 |
| | | url, // 安装包下载地址 |
| | | platform, // 安装包平台 |
| | | type // 安装包类型 |
| | | } = e.result; |
| | | |
| | | // 此处逻辑仅为实例,可自行编写 |
| | | if (code > 0) { |
| | | // 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回 |
| | | const { |
| | | fileList |
| | | } = await uniCloud.getTempFileURL({ |
| | | fileList: [url] |
| | | }); |
| | | if (fileList[0].tempFileURL) |
| | | e.result.url = fileList[0].tempFileURL; |
| | | |
| | | resolve(e) |
| | | |
| | | // 静默更新,只有wgt有 |
| | | if (is_silently) { |
| | | uni.downloadFile({ |
| | | url: e.result.url, |
| | | success: res => { |
| | | if (res.statusCode == 200) { |
| | | // 下载好直接安装,下次启动生效 |
| | | plus.runtime.install(res.tempFilePath, { |
| | | force: false |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | /** |
| | | * 提示升级一 |
| | | * 使用 uni.showModal |
| | | */ |
| | | // return updateUseModal(e.result) |
| | | |
| | | /** |
| | | * 提示升级二 |
| | | * 官方适配的升级弹窗,可自行替换资源适配UI风格 |
| | | */ |
| | | uni.setStorageSync(PACKAGE_INFO_KEY, e.result) |
| | | uni.navigateTo({ |
| | | url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`, |
| | | fail: (err) => { |
| | | console.error('更新弹框跳转失败', err) |
| | | uni.removeStorageSync(PACKAGE_INFO_KEY) |
| | | } |
| | | }) |
| | | } else if (code < 0) { |
| | | // TODO 云函数报错处理 |
| | | console.error(message) |
| | | reject(e) |
| | | } |
| | | }).catch(err => { |
| | | // TODO 云函数报错处理 |
| | | console.error(err.message) |
| | | reject(err) |
| | | }) |
| | | }); |
| | | // #endif |
| | | } |
| | | |
| | | /** |
| | | * 使用 uni.showModal 升级 |
| | | */ |
| | | function updateUseModal(packageInfo) { |
| | | const { |
| | | title, // 标题 |
| | | contents, // 升级内容 |
| | | is_mandatory, // 是否强制更新 |
| | | url, // 安装包下载地址 |
| | | platform, // 安装包平台 |
| | | type // 安装包类型 |
| | | } = packageInfo; |
| | | |
| | | let isWGT = type === 'wgt' |
| | | let isiOS = !isWGT ? platform.includes('iOS') : false; |
| | | let confirmText = isiOS ? '立即跳转更新' : '立即下载更新' |
| | | |
| | | return uni.showModal({ |
| | | title, |
| | | content: contents, |
| | | showCancel: !is_mandatory, |
| | | confirmText, |
| | | success: res => { |
| | | if (res.cancel) return; |
| | | |
| | | // 安装包下载 |
| | | if (isiOS) { |
| | | plus.runtime.openURL(url); |
| | | return; |
| | | } |
| | | |
| | | uni.showToast({ |
| | | title: '后台下载中……', |
| | | duration: 1000 |
| | | }); |
| | | |
| | | // wgt 和 安卓下载更新 |
| | | downloadTask = uni.downloadFile({ |
| | | url, |
| | | success: res => { |
| | | if (res.statusCode !== 200) { |
| | | console.error('下载安装包失败', err); |
| | | return; |
| | | } |
| | | // 下载好直接安装,下次启动生效 |
| | | plus.runtime.install(res.tempFilePath, { |
| | | force: false |
| | | }, () => { |
| | | if (is_mandatory) { |
| | | //更新完重启app |
| | | plus.runtime.restart(); |
| | | return; |
| | | } |
| | | uni.showModal({ |
| | | title: '安装成功是否重启?', |
| | | success: res => { |
| | | if (res.confirm) { |
| | | //更新完重启app |
| | | plus.runtime.restart(); |
| | | } |
| | | } |
| | | }); |
| | | }, err => { |
| | | uni.showModal({ |
| | | title: '更新失败', |
| | | content: err |
| | | .message, |
| | | showCancel: false |
| | | }); |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | import callCheckVersion from './call-check-version'
|
| | |
|
| | | // 推荐再App.vue中使用
|
| | | const PACKAGE_INFO_KEY = '__package_info__'
|
| | |
|
| | | export default function() {
|
| | | // #ifdef APP-PLUS
|
| | | return new Promise((resolve, reject) => {
|
| | | callCheckVersion().then(async (e) => {
|
| | | if (!e.result) return;
|
| | | const {
|
| | | code,
|
| | | message,
|
| | | is_silently, // 是否静默更新
|
| | | url, // 安装包下载地址
|
| | | platform, // 安装包平台
|
| | | type // 安装包类型
|
| | | } = e.result;
|
| | |
|
| | | // 此处逻辑仅为实例,可自行编写
|
| | | if (code > 0) {
|
| | | // 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
|
| | | const {
|
| | | fileList
|
| | | } = await uniCloud.getTempFileURL({
|
| | | fileList: [url]
|
| | | });
|
| | | if (fileList[0].tempFileURL)
|
| | | e.result.url = fileList[0].tempFileURL;
|
| | |
|
| | | resolve(e)
|
| | |
|
| | | // 静默更新,只有wgt有
|
| | | if (is_silently) {
|
| | | uni.downloadFile({
|
| | | url: e.result.url,
|
| | | success: res => {
|
| | | if (res.statusCode == 200) {
|
| | | // 下载好直接安装,下次启动生效
|
| | | plus.runtime.install(res.tempFilePath, {
|
| | | force: false
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | return;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 提示升级一
|
| | | * 使用 uni.showModal
|
| | | */
|
| | | // return updateUseModal(e.result)
|
| | |
|
| | | /**
|
| | | * 提示升级二
|
| | | * 官方适配的升级弹窗,可自行替换资源适配UI风格
|
| | | */
|
| | | uni.setStorageSync(PACKAGE_INFO_KEY, e.result)
|
| | | uni.navigateTo({
|
| | | url: `/uni_modules/uni-upgrade-center-app/pages/upgrade-popup?local_storage_key=${PACKAGE_INFO_KEY}`,
|
| | | fail: (err) => {
|
| | | console.error('更新弹框跳转失败', err)
|
| | | uni.removeStorageSync(PACKAGE_INFO_KEY)
|
| | | }
|
| | | })
|
| | | } else if (code < 0) {
|
| | | // TODO 云函数报错处理
|
| | | console.error(message)
|
| | | reject(e)
|
| | | }
|
| | | }).catch(err => {
|
| | | // TODO 云函数报错处理
|
| | | console.error(err.message)
|
| | | reject(err)
|
| | | })
|
| | | });
|
| | | // #endif
|
| | | }
|
| | |
|
| | | /**
|
| | | * 使用 uni.showModal 升级
|
| | | */
|
| | | function updateUseModal(packageInfo) {
|
| | | const {
|
| | | title, // 标题
|
| | | contents, // 升级内容
|
| | | is_mandatory, // 是否强制更新
|
| | | url, // 安装包下载地址
|
| | | platform, // 安装包平台
|
| | | type // 安装包类型
|
| | | } = packageInfo;
|
| | |
|
| | | let isWGT = type === 'wgt'
|
| | | let isiOS = !isWGT ? platform.includes('iOS') : false;
|
| | | let confirmText = isiOS ? '立即跳转更新' : '立即下载更新'
|
| | |
|
| | | return uni.showModal({
|
| | | title,
|
| | | content: contents,
|
| | | showCancel: !is_mandatory,
|
| | | confirmText,
|
| | | success: res => {
|
| | | if (res.cancel) return;
|
| | |
|
| | | // 安装包下载
|
| | | if (isiOS) {
|
| | | plus.runtime.openURL(url);
|
| | | return;
|
| | | }
|
| | |
|
| | | uni.showToast({
|
| | | title: '后台下载中……',
|
| | | duration: 1000
|
| | | });
|
| | |
|
| | | // wgt 和 安卓下载更新
|
| | | downloadTask = uni.downloadFile({
|
| | | url,
|
| | | success: res => {
|
| | | if (res.statusCode !== 200) {
|
| | | console.error('下载安装包失败', err);
|
| | | return;
|
| | | }
|
| | | // 下载好直接安装,下次启动生效
|
| | | plus.runtime.install(res.tempFilePath, {
|
| | | force: false
|
| | | }, () => {
|
| | | if (is_mandatory) {
|
| | | //更新完重启app
|
| | | plus.runtime.restart();
|
| | | return;
|
| | | }
|
| | | uni.showModal({
|
| | | title: '安装成功是否重启?',
|
| | | success: res => {
|
| | | if (res.confirm) {
|
| | | //更新完重启app
|
| | | plus.runtime.restart();
|
| | | }
|
| | | }
|
| | | });
|
| | | }, err => {
|
| | | uni.showModal({
|
| | | title: '更新失败',
|
| | | content: err
|
| | | .message,
|
| | | showCancel: false
|
| | | });
|
| | | });
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | }
|