| New file | 
 |  |  | 
 |  |  | 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 | 
 |  |  |                   }); | 
 |  |  |                }); | 
 |  |  |             } | 
 |  |  |          }); | 
 |  |  |       } | 
 |  |  |    }); | 
 |  |  | } |