From a921045c32408afe043cc9cb98ce4e8fe321b0a3 Mon Sep 17 00:00:00 2001
From: linju <8432241+linjuDcloud@user.noreply.gitee.com>
Date: Tue, 13 Apr 2021 16:29:30 +0800
Subject: [PATCH] 21
---
.gitignore | 3 +-
manifest.json | 6 +-
.../ucenter/edit/uploadCutImageToUnicloud.vue | 2 +-
.../cloudfunctions/common/uni-id/config.json | 52 -
.../uni-quick-login/uni-quick-login.vue | 5 +-
.../uni-upgrade-center-app/changelog.md | 9 +
.../uni-upgrade-center-app/package.json | 158 +--
.../pages/upgrade-popup.vue | 928 +++++++++---------
uni_modules/uni-upgrade-center-app/readme.md | 139 +--
.../check-version/check-version.param.json | 2 +-
.../cloudfunctions/check-version/index.js | 38 +-
.../utils/check-update.js | 226 +++--
12 files changed, 844 insertions(+), 724 deletions(-)
delete mode 100644 uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
diff --git a/.gitignore b/.gitignore
index 269295a6..871ae1ea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,5 @@
unpackage/
.hbuilderx
node_modules
-.DS_Store
\ No newline at end of file
+.DS_Store
+uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
index 9f17b324..d3019060 100644
--- a/manifest.json
+++ b/manifest.json
@@ -77,15 +77,15 @@
"oauth" : {
"apple" : {},
"weixin" : {
- "appid" : "wx0411fa6a39d61297",
- "appsecret" : "",
+ "appid" : "wxffdd8fa6ec4ef2a0",
+ "appsecret" : "6c9119430d7be0a147bcbbb73ef33acf",
"UniversalLinks" : "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E"
},
"univerify" : {}
},
"share" : {
"weixin" : {
- "appid" : "wx0411fa6a39d61297",
+ "appid" : "wxffdd8fa6ec4ef2a0",
"UniversalLinks" : "https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E",
"_spaceID" : "76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e"
}
diff --git a/pages/ucenter/edit/uploadCutImageToUnicloud.vue b/pages/ucenter/edit/uploadCutImageToUnicloud.vue
index f81a23ae..839b03d6 100644
--- a/pages/ucenter/edit/uploadCutImageToUnicloud.vue
+++ b/pages/ucenter/edit/uploadCutImageToUnicloud.vue
@@ -1,6 +1,6 @@
-
diff --git a/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json b/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
deleted file mode 100644
index ab82b621..00000000
--- a/uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
- "passwordSecret": "passwordSecret-demo",
- "tokenSecret": "tokenSecret-demo",
- "tokenExpiresIn": 7200,
- "tokenExpiresThreshold": 600,
- "passwordErrorLimit": 6,
- "bindTokenToDevice": true,
- "passwordErrorRetryTime": 3600,
- "autoSetInviteCode": false,
- "forceInviteCode": false,
- "app-plus": {
- "tokenExpiresIn": 2592000,
- "oauth": {
- "weixin": {
- "appid": "wx0411fa6a39d61297",
- "appsecret": "6c9119430d7be0a147bcbbb73ef33acf"
- },
- "apple": {
- "bundleId": "io.dcloud.game.cat"
- }
- }
- },
- "mp-weixin": {
- "oauth": {
- "weixin": {
- "appid": "wx999bf02c8e05dfc9",
- "appsecret": "b5f608afd332b2c0ded7e6b98ca4ccd3"
- }
- }
- },
- "mp-alipay": {
- "oauth": {
- "alipay": {
- "appid": "alipay appid",
- "privateKey": "alipay privateKey"
- }
- }
- },
- "service": {
- "sms": {
- "name": "DCloud",
- "codeExpiresIn": 300,
- "smsKey": "71a19f38c954f7d768d68a050486bf15",
- "smsSecret": "d6c424b702d73baa3b6e1a1452469213"
- },
- "univerify": {
- "appid": "__UNI__BC54A00",
- "apiKey": "d1e36bcd497b3795434d900dcfdd44dc",
- "apiSecret": "2feb378ff1114362b20ac179b572293e"
- }
- }
-}
diff --git a/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue b/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
index 01339c58..8868a0d1 100644
--- a/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
+++ b/uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
@@ -98,12 +98,15 @@
let oauthService = this.oauthServices.find((service) => service.id == type)
// #ifdef APP-PLUS
//uni.showLoading({mask: true});
-
+ console.log(type,231);
//请勿直接使用前端获取的unionid或openid直接用于登陆,前端的数据都是不可靠的
if(type=='weixin'){
oauthService.authorize(({code})=>{
console.log(code);
this.quickLogin({code},type)
+ },
+ err=>{
+ console.log(err);
})
}
diff --git a/uni_modules/uni-upgrade-center-app/changelog.md b/uni_modules/uni-upgrade-center-app/changelog.md
index 65d92778..48b9ee44 100644
--- a/uni_modules/uni-upgrade-center-app/changelog.md
+++ b/uni_modules/uni-upgrade-center-app/changelog.md
@@ -1,3 +1,12 @@
+## 0.1.2(2021-04-07)
+- 更新版本对比函数 compare
+## 0.1.1(2021-04-07)
+- 修复 腾讯云空间下载链接不能下载问题
+## 0.1.0(2021-04-07)
+- 新增使用uni.showModal提示升级示例
+- 修改iOS升级提示方式
+## 0.0.7(2021-04-02)
+- 修复在iOS上打开弹框报错
## 0.0.6(2021-04-01)
- 兼容旧版本安卓
## 0.0.5(2021-04-01)
diff --git a/uni_modules/uni-upgrade-center-app/package.json b/uni_modules/uni-upgrade-center-app/package.json
index fe0caf71..fbaf85db 100644
--- a/uni_modules/uni-upgrade-center-app/package.json
+++ b/uni_modules/uni-upgrade-center-app/package.json
@@ -1,80 +1,80 @@
-{
- "id": "uni-upgrade-center-app",
- "displayName": "升级中心 uni-upgrade-center - App",
- "version": "0.0.6",
- "description": "升级中心前台检查更新",
- "keywords": [
- "uniCloud",
- "admin",
- "update",
- "升级",
- "wgt"
-],
- "repository": "https://gitee.com/dcloud/uni-upgrade-center/tree/master/uni_modules/uni-upgrade-center-app",
- "engines": {
- "HBuilderX": "^3.1.0"
- },
- "dcloudext": {
- "category": [
- "uniCloud",
- "云端一体页面模板"
- ],
- "sale": {
- "regular": {
- "price": "0.00"
- },
- "sourcecode": {
- "price": "0.00"
- }
- },
- "contact": {
- "qq": ""
- },
- "declaration": {
- "ads": "无",
- "data": "插件不采集任何数据",
- "permissions": "无"
- },
- "npmurl": ""
- },
- "uni_modules": {
- "dependencies": [],
- "encrypt": [],
- "platforms": {
- "cloud": {
- "tcb": "y",
- "aliyun": "y"
- },
- "client": {
- "App": {
- "app-vue": "u",
- "app-nvue": "u"
- },
- "H5-mobile": {
- "Safari": "u",
- "Android Browser": "u",
- "微信浏览器(Android)": "u",
- "QQ浏览器(Android)": "u"
- },
- "H5-pc": {
- "Chrome": "u",
- "IE": "u",
- "Edge": "u",
- "Firefox": "u",
- "Safari": "u"
- },
- "小程序": {
- "微信": "u",
- "阿里": "u",
- "百度": "u",
- "字节跳动": "u",
- "QQ": "u"
- },
- "快应用": {
- "华为": "u",
- "联盟": "u"
- }
- }
- }
- }
+{
+ "id": "uni-upgrade-center-app",
+ "displayName": "升级中心 uni-upgrade-center - App",
+ "version": "0.1.2",
+ "description": "升级中心前台检查更新",
+ "keywords": [
+ "uniCloud",
+ "admin",
+ "update",
+ "升级",
+ "wgt"
+],
+ "repository": "https://gitee.com/dcloud/uni-upgrade-center/tree/master/uni_modules/uni-upgrade-center-app",
+ "engines": {
+ "HBuilderX": "^3.1.0"
+ },
+ "dcloudext": {
+ "category": [
+ "uniCloud",
+ "云端一体页面模板"
+ ],
+ "sale": {
+ "regular": {
+ "price": "0.00"
+ },
+ "sourcecode": {
+ "price": "0.00"
+ }
+ },
+ "contact": {
+ "qq": ""
+ },
+ "declaration": {
+ "ads": "无",
+ "data": "插件不采集任何数据",
+ "permissions": "无"
+ },
+ "npmurl": ""
+ },
+ "uni_modules": {
+ "dependencies": [],
+ "encrypt": [],
+ "platforms": {
+ "cloud": {
+ "tcb": "y",
+ "aliyun": "y"
+ },
+ "client": {
+ "App": {
+ "app-vue": "u",
+ "app-nvue": "u"
+ },
+ "H5-mobile": {
+ "Safari": "u",
+ "Android Browser": "u",
+ "微信浏览器(Android)": "u",
+ "QQ浏览器(Android)": "u"
+ },
+ "H5-pc": {
+ "Chrome": "u",
+ "IE": "u",
+ "Edge": "u",
+ "Firefox": "u",
+ "Safari": "u"
+ },
+ "小程序": {
+ "微信": "u",
+ "阿里": "u",
+ "百度": "u",
+ "字节跳动": "u",
+ "QQ": "u"
+ },
+ "快应用": {
+ "华为": "u",
+ "联盟": "u"
+ }
+ }
+ }
+ }
}
diff --git a/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue b/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
index 0b70fa08..00d928b3 100644
--- a/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
+++ b/uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
@@ -1,457 +1,501 @@
-
-
-
-
- {{title}}
-
-
-
-
-
-
- {{subTitle}}
-
-
-
-
-
- {{contents}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/uni_modules/uni-upgrade-center-app/readme.md b/uni_modules/uni-upgrade-center-app/readme.md
index a1582b24..b434a383 100644
--- a/uni_modules/uni-upgrade-center-app/readme.md
+++ b/uni_modules/uni-upgrade-center-app/readme.md
@@ -1,94 +1,95 @@
-# uni-upgrade-center - App
-
-### 概述
-
+# uni-upgrade-center - App
+
+### 概述
+
> 统一管理App及App在`Android`、`iOS`平台上`App安装包`和`wgt资源包`的发布升级
> 本插件为升级中心前台检查更新,后台Admin管理系统请点击查看 [uni-upgrade-center](https://ext.dcloud.net.cn/plugin?id=4470)
-### 基于uni-upgrade-center的App前台检查升级插件
- - 一键式检查更新,统一整包与wgt资源包更新
- - 好看、实用、可自定义、可拓展的前台更新弹框
-
-## 安装指引
-
-1. 使用`HBuilderX 3.1.0+`,因为要使用到`uni_modules`
-
-3. 在插件市场打开本插件页面,在右侧点击`使用 HBuilderX 导入插件`,选择要导入的项目点击确定
+### 基于uni-upgrade-center的App前台检查升级插件
+ - 一键式检查更新,统一整包与wgt资源包更新
+ - 好看、实用、可自定义、可拓展的前台更新弹框
+## 安装指引
+
+1. 使用`HBuilderX 3.1.0+`,因为要使用到`uni_modules`
+
+3. 在插件市场打开本插件页面,在右侧点击`使用 HBuilderX 导入插件`,选择要导入的项目点击确定
+
5. 找到`/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version`,右键上传部署
-6. 在`pages.json`中添加页面路径
-```json
-"pages": [
- // ……其他页面配置
- {
- "path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
- "style": {
- "disableScroll": true,
- "app-plus": {
- "backgroundColorTop": "transparent",
- "background": "transparent",
- "titleNView": false,
- "scrollIndicator": false,
- "popGesture": "none",
- "animationType": "fade-in",
- "animationDuration": 200
-
- }
- }
- }
-]
+6. 在`pages.json`中添加页面路径
+```json
+"pages": [
+ // ……其他页面配置
+ {
+ "path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
+ "style": {
+ "disableScroll": true,
+ "app-plus": {
+ "backgroundColorTop": "transparent",
+ "background": "transparent",
+ "titleNView": false,
+ "scrollIndicator": false,
+ "popGesture": "none",
+ "animationType": "fade-in",
+ "animationDuration": 200
+
+ }
+ }
+ }
+]
```
-7. 将`/uni_modules/uni-upgrade-center-app/utils/check-update`import到需要用到的地方,调用一下即可
+7. 将`/uni_modules/uni-upgrade-center-app/utils/check-update`import到需要用到的地方,调用一下即可
+
+8. 升级弹框可自行编写,也可以使用`uni.showModal`,或使用现有的升级弹框样式,如果不满足UI需求请自行替换资源文件。在`utils/check-update.js`中都有实例。
### 更新下载安装`check-update.js`
*该函数在utils目录下*
-
-1. 如果是静默更新,则不会打开更新弹框,会在后台下载后安装,下次启动应用生效
-
+
+1. 如果是静默更新,则不会打开更新弹框,会在后台下载后安装,下次启动应用生效
+
2. 如果是 iOS,则会直接打开AppStore的链接
-3. 其他情况,会将`check-version`返回的结果保存在localStorage中,并跳转进入`upgrade-popup.vue`打开更新弹框
+3. 其他情况,会将`check-version`返回的结果保存在localStorage中,并跳转进入`upgrade-popup.vue`打开更新弹框
-### 检查更新函数`check-version`
+### 检查更新函数`check-version`
*该函数在uniCloud/cloudfunctions目录下*
-
-1. 使用检查更新需要传递三个参数 `appid`、`appVersion`、`wgtVersion`
-
-2. `appid` 使用 plus.runtime.appid 获取,*注:真机运行时为固定值HBuilder,在调试的时候请使用本地调试云函数*
-
-3. `appVersion` 使用 plus.runtime.version 获取
-
-4. `wgtVersion` 使用 plus.runtime.getProperty(plus.runtime.appid,(wgtInfo) => { wgtInfo.version }) 获取
-
-5. `check-version`云函数内部会自动获取 App 平台
-
-6. 检查更新前端使用示例:`uni_modules/uni-upgrade-center-app/utils/check-update.js`,在要用的地方导入调用即可
-
+
+1. 使用检查更新需要传递三个参数 `appid`、`appVersion`、`wgtVersion`
+
+2. `appid` 使用 plus.runtime.appid 获取,*注:真机运行时为固定值HBuilder,在调试的时候请使用本地调试云函数*
+
+3. `appVersion` 使用 plus.runtime.version 获取
+
+4. `wgtVersion` 使用 plus.runtime.getProperty(plus.runtime.appid,(wgtInfo) => { wgtInfo.version }) 获取
+
+5. `check-version`云函数内部会自动获取 App 平台
+
+6. 检查更新前端使用示例:`uni_modules/uni-upgrade-center-app/utils/check-update.js`,在要检查更新的地方导入调用即可
## 项目代码说明
-### 更新弹框
-- `upgrade-popup.vue` - 更新应用:
- - 如果`check-version`返回的参数表明需要更新,则将参数保存在localStorage中,带着键值跳转该页面
- - 进入时会先从localStorage中尝试取出之前存的安装包路径(此包不会是强制安装类型的包)
- - 如果有已经保存的包,则和传进来的 `version` 进行比较,如果相等则安装。大于和小于都不进行安装,因为admin端可能会调整包的版本。不符合更新会将此包删除
- - 如果本地没有包或者包不符合安装条件,则进行下载安装包
- - 点击下载会有进度条、已下载大小和下载包的大小
+### 更新弹框
+- `upgrade-popup.vue` - 更新应用:
+ - 如果`check-version`返回的参数表明需要更新,则将参数保存在localStorage中,带着键值跳转该页面
+ - 进入时会先从localStorage中尝试取出之前存的安装包路径(此包不会是强制安装类型的包)
+ - 如果有已经保存的包,则和传进来的 `version` 进行比较,如果相等则安装。大于和小于都不进行安装,因为admin端可能会调整包的版本。不符合更新会将此包删除
+ - 如果本地没有包或者包不符合安装条件,则进行下载安装包
+ - 点击下载会有进度条、已下载大小和下载包的大小
- 下载完成会提示安装:
- - 如果是 wgt 包,安装时则会提示 正在安装…… 和 安装完成。安装完成会提示是否重启
- - 如果是 原生安装包,则直接跳出去覆盖安装
- - 下载过程中,如果退出会提示是否取消下载。如果是强制更新,则只会提示正在下载请稍后,此时不可退出
+ - 如果是 wgt 包,安装时则会提示 正在安装…… 和 安装完成。安装完成会提示是否重启
+ - 如果是 原生安装包,则直接跳出去覆盖安装
+ - 下载过程中,如果退出会提示是否取消下载。如果是强制更新,则只会提示正在下载请稍后,此时不可退出
- 如果是下载完成了没有安装就退出,则会将下载完成的包保存在本地。将包的本地路径和包version保存在localStorage中
-### 云函数
-- `check-version` - 检查应用更新:
- - 根据传参,先检测传参是否完整,appid appVersion wgtVersion 必传
- - 先从数据库取出所有该平台(会从上下文读取平台信息)的所有线上发行更新
- - 再从所有线上发行更新中取出版本最大的一版。如果可以,尽量先检测wgt的线上发行版更新
- - 使用上一步取出的版本包的版本号 和传参 appVersion、wgtVersion 来检测是否有更新。必须同时大于这两项,因为上一次可能是wgt热更新,否则返回暂无更新
+### 云函数
+- `check-version` - 检查应用更新:
+ - 根据传参,先检测传参是否完整,appid appVersion wgtVersion 必传
+ - 先从数据库取出所有该平台(会从上下文读取平台信息)的所有线上发行更新
+ - 再从所有线上发行更新中取出版本最大的一版。如果可以,尽量先检测wgt的线上发行版更新
+ - 使用上一步取出的版本包的版本号 和传参 appVersion、wgtVersion 来检测是否有更新。必须同时大于这两项,因为上一次可能是wgt热更新,否则返回暂无更新
- 如果库中 wgt包 版本大于传参 appVersion,但是不满足 min_uni_version < appVersion,则不会使用wgt更新,会接着判断库中 app包version 是否大于 appVersion
\ No newline at end of file
diff --git a/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json b/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json
index 5dde9b04..c53f322a 100644
--- a/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json
+++ b/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json
@@ -3,7 +3,7 @@
// 配置教程参考:https://uniapp.dcloud.net.cn/uniCloud/quickstart?id=runparam
{
- "appid": "uni.UNIBC54A00",
+ "appid": "__YOUR_APPID__",
"appVersion": "2.2.0",
"wgtVersion": "2.2.2"
}
diff --git a/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js b/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js
index 047dfacd..24087d38 100644
--- a/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js
+++ b/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js
@@ -124,14 +124,44 @@ exports.main = async (event, context) => {
};
/**
- * 对比版本号,如需要,请自行修改判断规则
+ * 对比版本号,如需要,请自行修改判断规则
+ * 支持比对 ("3.0.0.0.0.1.0.1", "3.0.0.0.0.1") ("3.0.0.1", "3.0") ("3.1.1", "3.1.1.1") 之类的
* @param {Object} v1
* @param {Object} v2
* v1 > v2 return 1
* v1 < v2 return -1
* v1 == v2 return 0
*/
-function compare(v1 = 0, v2 = 0) {
- // '1.2.5' > '1.2.4' 类似的版本号可以直接对比
- return v1 > v2 ? 1 : v1 < v2 ? -1 : 0;
+function compare(v1 = '0', v2 = '0') {
+ v1 = String(v1).split('.')
+ v2 = String(v2).split('.')
+ const minVersionLens = Math.min(v1.length, v2.length);
+
+ let result = 0;
+ for (let i = 0; i < minVersionLens; i++) {
+ const curV1 = Number(v1[i])
+ const curV2 = Number(v2[i])
+
+ if (curV1 > curV2) {
+ result = 1
+ break;
+ } else if(curV1 < curV2) {
+ result = -1
+ break;
+ }
+ }
+
+ if (result === 0 && (v1.length !== v2.length)) {
+ const v1BiggerThenv2 = v1.length > v2.length;
+ const maxLensVersion = v1BiggerThenv2 ? v1 : v2;
+ for (let i = minVersionLens; i < maxLensVersion.length; i++) {
+ const curVersion = Number(maxLensVersion[i])
+ if (curVersion > 0) {
+ v1BiggerThenv2 ? result = 1 : result = -1
+ break;
+ }
+ }
+ }
+
+ return result;
}
diff --git a/uni_modules/uni-upgrade-center-app/utils/check-update.js b/uni_modules/uni-upgrade-center-app/utils/check-update.js
index 11520671..da21b102 100644
--- a/uni_modules/uni-upgrade-center-app/utils/check-update.js
+++ b/uni_modules/uni-upgrade-center-app/utils/check-update.js
@@ -1,73 +1,157 @@
-// 推荐再App.vue中使用
-const PACKAGE_INFO_KEY = '__package_info__'
-
-export default function() {
- // #ifdef APP-PLUS
-
-
- plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
- uniCloud.callFunction({
- name: 'check-version',
- data: {
- appid: plus.runtime.appid,
- appVersion: plus.runtime.version,
- wgtVersion: widgetInfo.version
- },
- success: (e) => {
- if (!e.result) return;
- const {
- code,
- message,
- is_silently, // 是否静默更新
- url, // 安装包下载地址
- platform, // 安装包平台
- type // 安装包类型
- } = e.result;
- // 此处逻辑仅为实例,可自行编写
+// 推荐再App.vue中使用
+const PACKAGE_INFO_KEY = '__package_info__'
+
+export default function() {
+ // #ifdef APP-PLUS
+ plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
+ uniCloud.callFunction({
+ name: 'check-version',
+ data: {
+ appid: plus.runtime.appid,
+ appVersion: plus.runtime.version,
+ wgtVersion: widgetInfo.version
+ },
+ success: async (e) => {
+ if (!e.result) return;
+ const {
+ code,
+ message,
+ is_silently, // 是否静默更新
+ url, // 安装包下载地址
+ platform, // 安装包平台
+ type // 安装包类型
+ } = e.result;
+
+ // 此处逻辑仅为实例,可自行编写
if (code > 0) {
- // 静默更新,只有wgt有
- if (is_silently) {
- downloadTask = uni.downloadFile({
- url: this.url,
- success: res => {
- if (res.statusCode == 200) {
- // 下载好直接安装,下次启动生效
- plus.runtime.install(res.tempFilePath, {
- force: false
- });
- }
- }
- });
- return;
- }
-
- if (type === 'native_app' && platform.includes('iOS')) {
- // iOS 跳转 AppStore 商店
- plus.runtime.openURL(url);
- return;
- }
-
- 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)
- }
- },
- fail: (err) => {
- // TODO 云函数报错处理
- console.error(err.message)
- }
- })
- });
- // #endif
+ // 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
+ const {
+ fileList
+ } = await uniCloud.getTempFileURL({
+ fileList: [url]
+ });
+ e.result.url = fileList[0].tempFileURL
+
+ // 静默更新,只有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)
+ }
+ },
+ fail: (err) => {
+ // TODO 云函数报错处理
+ console.error(err.message)
+ }
+ })
+ });
+ // #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
+ });
+ });
+ }
+ });
+ }
+ });
}
--
GitLab