Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
言程序plus
uni-starter
提交
a921045c
U
uni-starter
项目概览
言程序plus
/
uni-starter
与 Fork 源项目一致
Fork自
DCloud / uni-starter
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-starter
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a921045c
编写于
4月 13, 2021
作者:
L
linju
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
21
上级
14d1d150
变更
12
展开全部
隐藏空白更改
内联
并排
Showing
12 changed file
with
844 addition
and
724 deletion
+844
-724
.gitignore
.gitignore
+2
-1
manifest.json
manifest.json
+3
-3
pages/ucenter/edit/uploadCutImageToUnicloud.vue
pages/ucenter/edit/uploadCutImageToUnicloud.vue
+1
-1
uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
.../uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
+0
-52
uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
...uick-login/components/uni-quick-login/uni-quick-login.vue
+4
-1
uni_modules/uni-upgrade-center-app/changelog.md
uni_modules/uni-upgrade-center-app/changelog.md
+9
-0
uni_modules/uni-upgrade-center-app/package.json
uni_modules/uni-upgrade-center-app/package.json
+79
-79
uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
+486
-442
uni_modules/uni-upgrade-center-app/readme.md
uni_modules/uni-upgrade-center-app/readme.md
+70
-69
uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json
...oud/cloudfunctions/check-version/check-version.param.json
+1
-1
uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js
...center-app/uniCloud/cloudfunctions/check-version/index.js
+34
-4
uni_modules/uni-upgrade-center-app/utils/check-update.js
uni_modules/uni-upgrade-center-app/utils/check-update.js
+155
-71
未找到文件。
.gitignore
浏览文件 @
a921045c
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
manifest.json
浏览文件 @
a921045c
...
...
@@ -77,15 +77,15 @@
"oauth"
:
{
"apple"
:
{},
"weixin"
:
{
"appid"
:
"wx
0411fa6a39d61297
"
,
"appsecret"
:
""
,
"appid"
:
"wx
ffdd8fa6ec4ef2a0
"
,
"appsecret"
:
"
6c9119430d7be0a147bcbbb73ef33acf
"
,
"UniversalLinks"
:
"https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E"
},
"univerify"
:
{}
},
"share"
:
{
"weixin"
:
{
"appid"
:
"wx
0411fa6a39d61297
"
,
"appid"
:
"wx
ffdd8fa6ec4ef2a0
"
,
"UniversalLinks"
:
"https://static-76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e.bspapp.com/uni-universallinks/__UNI__03B096E"
,
"_spaceID"
:
"76ce2c5e-31c7-4d81-8fcf-ed1541ecbc6e"
}
...
...
pages/ucenter/edit/uploadCutImageToUnicloud.vue
浏览文件 @
a921045c
<
template
>
<view
class=
"content"
>
<limeClipper
:width=
"options.width"
:scale-ratio=
"2"
:is-lock-width=
"
true"
:is-lock-height=
"tru
e"
:height=
"options.height"
:image-url=
"path"
<limeClipper
:width=
"options.width"
:scale-ratio=
"2"
:is-lock-width=
"
false"
:is-lock-height=
"fals
e"
:height=
"options.height"
:image-url=
"path"
@
success=
"successFn"
@
cancel=
"cancel"
/>
</view>
</
template
>
...
...
uni_modules/uni-id/uniCloud/cloudfunctions/common/uni-id/config.json
已删除
100644 → 0
浏览文件 @
14d1d150
{
"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"
}
}
}
uni_modules/uni-quick-login/components/uni-quick-login/uni-quick-login.vue
浏览文件 @
a921045c
...
...
@@ -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
);
})
}
...
...
uni_modules/uni-upgrade-center-app/changelog.md
浏览文件 @
a921045c
## 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)
...
...
uni_modules/uni-upgrade-center-app/package.json
浏览文件 @
a921045c
{
"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"
}
}
}
}
}
uni_modules/uni-upgrade-center-app/pages/upgrade-popup.vue
浏览文件 @
a921045c
此差异已折叠。
点击以展开。
uni_modules/uni-upgrade-center-app/readme.md
浏览文件 @
a921045c
# 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
uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/check-version.param.json
浏览文件 @
a921045c
...
...
@@ -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"
}
uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version/index.js
浏览文件 @
a921045c
...
...
@@ -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
;
}
uni_modules/uni-upgrade-center-app/utils/check-update.js
浏览文件 @
a921045c
// 推荐再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
});
});
}
});
}
});
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录