Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦想橡皮擦
uni-starter
提交
db11835d
U
uni-starter
项目概览
梦想橡皮擦
/
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看板
提交
db11835d
编写于
4月 15, 2021
作者:
芊
芊里
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
检查更新完成
上级
e89739ed
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
178 addition
and
95 deletion
+178
-95
common/appInit.js
common/appInit.js
+19
-7
pages/ucenter/ucenter.vue
pages/ucenter/ucenter.vue
+30
-4
uni_modules/uni-upgrade-center-app/changelog.md
uni_modules/uni-upgrade-center-app/changelog.md
+4
-0
uni_modules/uni-upgrade-center-app/package.json
uni_modules/uni-upgrade-center-app/package.json
+1
-1
uni_modules/uni-upgrade-center-app/readme.md
uni_modules/uni-upgrade-center-app/readme.md
+36
-15
uni_modules/uni-upgrade-center-app/utils/call-check-version.js
...odules/uni-upgrade-center-app/utils/call-check-version.js
+29
-0
uni_modules/uni-upgrade-center-app/utils/check-update.js
uni_modules/uni-upgrade-center-app/utils/check-update.js
+59
-68
未找到文件。
common/appInit.js
浏览文件 @
db11835d
// #ifdef APP-PLUS
import
checkUpdate
from
'
@/uni_modules/uni-upgrade-center-app/utils/check-update
'
;
import
callCheckVersion
from
'
@/uni_modules/uni-upgrade-center-app/utils/call-check-version
'
;
// #endif
export
default
function
()
{
// 初始化appVersion
...
...
@@ -21,16 +24,25 @@ function initAppVersion() {
// #ifdef APP-PLUS
let
appid
=
plus
.
runtime
.
appid
;
plus
.
runtime
.
getProperty
(
appid
,
(
wgtInfo
)
=>
{
wgtInfo
.
version
let
appVersion
=
plus
.
runtime
;
let
appVersion
=
plus
.
runtime
;
let
currentVersion
=
appVersion
.
versionCode
>
wgtInfo
.
versionCode
?
appVersion
:
wgtInfo
;
getApp
({
allowDefault
:
true
}).
appVersion
=
{
}).
appVersion
=
{
...
currentVersion
,
appid
,
version
:
appVersion
,
wgtVersion
:
wgtInfo
,
finall
:
appVersion
.
versionCode
>
wgtInfo
.
versionCode
?
appVersion
:
wgtInfo
}
hasNew
:
true
}
// 检查更新小红点
callCheckVersion
()
.
then
(
res
=>
{
if
(
res
.
result
.
code
>
0
){
// 有新版本
getApp
({
allowDefault
:
true
}).
appVersion
.
hasNew
=
true
;
}
})
});
// #endif
}
...
...
pages/ucenter/ucenter.vue
浏览文件 @
db11835d
...
...
@@ -20,7 +20,12 @@
:clickable=
"true"
:to=
"item.to"
@
click=
"ucenterListClick(item)"
></uni-list-item>
>
<view
v-if=
"item.showBadge"
class=
"item-footer"
slot=
"footer"
>
<text
class=
"item-footer-text"
>
{{
item
.
rightText
}}
</text>
<view
class=
"item-footer-badge"
></view>
</view>
</uni-list-item>
</uni-list>
</view>
</
template
>
...
...
@@ -74,8 +79,9 @@
//#ifdef APP-PLUS
{
title
:
'
检查更新
'
,
rightText
:
`V
${
getApp
().
appVersion
.
finall
.
version
}
_
${
getApp
().
appVersion
.
finall
.
versionCode
}
`
,
event
:
'
checkVersion
'
rightText
:
`V
${
getApp
().
appVersion
.
version
}
_
${
getApp
().
appVersion
.
versionCode
}
`
,
event
:
'
checkVersion
'
,
showBadge
:
true
}
//#endif
],
...
...
@@ -250,6 +256,26 @@
-webkit-transform
:
scaleY
(
0.2
);
transform
:
scaleY
(
0.2
);
}
/* #endif */
/* #endif */
.item-footer
{
flex-direction
:
row
;
align-items
:
center
;
}
.item-footer-text
{
color
:
#999
;
font-size
:
24
rpx
;
padding-right
:
10
rpx
;
}
.item-footer-badge
{
width
:
20
rpx
;
height
:
20
rpx
;
/* #ifndef APP-NVUE */
border-radius
:
50%
;
/* #endif */
/* #ifdef APP-NVUE */
border-radius
:
10
rpx
;
/* #endif */
background-color
:
#DD524D
;
}
</
style
>
uni_modules/uni-upgrade-center-app/changelog.md
浏览文件 @
db11835d
## 0.1.4(2021-04-13)
-
更新文档。明确云函数调用结果
## 0.1.3(2021-04-13)
-
解耦云函数与弹框处理。utils中新增 call-check-version.js,可用于单独检测是否有更新
## 0.1.2(2021-04-07)
-
更新版本对比函数 compare
## 0.1.1(2021-04-07)
...
...
uni_modules/uni-upgrade-center-app/package.json
浏览文件 @
db11835d
{
"id"
:
"uni-upgrade-center-app"
,
"displayName"
:
"升级中心 uni-upgrade-center - App"
,
"version"
:
"0.1.
2
"
,
"version"
:
"0.1.
4
"
,
"description"
:
"升级中心前台检查更新"
,
"keywords"
:
[
"uniCloud"
,
...
...
uni_modules/uni-upgrade-center-app/readme.md
浏览文件 @
db11835d
...
...
@@ -71,25 +71,46 @@
6.
检查更新前端使用示例:
`uni_modules/uni-upgrade-center-app/utils/check-update.js`
,在要检查更新的地方导入调用即可
**Tips**
1.
`check-version`
云函数内部有版本对比函数(compare)。
-
使用多段式版本格式(如:"3.0.0.0.0.1.0.1", "3.0.0.0.0.1")。如果不满足对比规则,请自行修改。
-
如果修改,请将
*pages/upgrade-popup.vue*
中
*compare*
函数一并修改
## 项目代码说明
### 更新弹框
-
`upgrade-popup.vue`
- 更新应用:
-
如果
`check-version`
返回的参数表明需要更新,则将参数保存在localStorage中,带着键值跳转该页面
-
进入时会先从localStorage中尝试取出之前存的安装包路径(此包不会是强制安装类型的包)
-
如果有已经保存的包,则和传进来的
`version`
进行比较,如果相等则安装。大于和小于都不进行安装,因为admin端可能会调整包的版本。不符合更新会将此包删除
-
如果本地没有包或者包不符合安装条件,则进行下载安装包
-
点击下载会有进度条、已下载大小和下载包的大小
-
下载完成会提示安装:
-
如果是 wgt 包,安装时则会提示 正在安装…… 和 安装完成。安装完成会提示是否重启
-
如果是 原生安装包,则直接跳出去覆盖安装
-
下载过程中,如果退出会提示是否取消下载。如果是强制更新,则只会提示正在下载请稍后,此时不可退出
-
如果是下载完成了没有安装就退出,则会将下载完成的包保存在本地。将包的本地路径和包version保存在localStorage中
-
如果云函数
`check-version`
返回的参数表明需要更新,则将参数保存在localStorage中,带着键值跳转该页面
-
进入时会先从localStorage中尝试取出之前存的安装包路径(此包不会是强制安装类型的包)
-
如果有已经保存的包,则和传进来的
`version`
进行比较,如果相等则安装。大于和小于都不进行安装,因为admin端可能会调整包的版本。不符合更新会将此包删除
-
如果本地没有包或者包不符合安装条件,则进行下载安装包
-
点击下载会有进度条、已下载大小和下载包的大小
-
下载完成会提示安装:
-
如果是 wgt 包,安装时则会提示 正在安装…… 和 安装完成。安装完成会提示是否重启
-
如果是 原生安装包,则直接跳出去覆盖安装
-
下载过程中,如果退出会提示是否取消下载。如果是强制更新,则只会提示正在下载请稍后,此时不可退出
-
如果是下载完成了没有安装就退出,则会将下载完成的包保存在本地。将包的本地路径和包version保存在localStorage中
### 工具类 utils
-
`call-check-version`
-
请求云函数
`check-version`
拿取版本检测结果
-
`check-update`
-
调用
`call-check-version`
并根据结果判断是否显示更新弹框
### 云函数
-
`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
-
根据传参,先检测传参是否完整,appid appVersion wgtVersion 必传
-
先从数据库取出所有该平台(会从上下文读取平台信息)的所有线上发行更新
-
再从所有线上发行更新中取出版本最大的一版。如果可以,尽量先检测wgt的线上发行版更新
-
使用上一步取出的版本包的版本号 和传参 appVersion、wgtVersion 来检测是否有更新。必须同时大于这两项,因为上一次可能是wgt热更新,否则返回暂无更新
-
如果库中 wgt包 版本大于传参 appVersion,但是不满足 min_uni_version < appVersion,则不会使用wgt更新,会接着判断库中 app包version 是否大于 appVersion
-
返回结果:
|code|message|
|:-:|:-:|
|0|当前版本已经是最新的,不需要更新|
|101|wgt更新|
|102|整包更新|
|-101|暂无更新或检查appid是否填写正确|
|-102|请检查传参是否填写正确|
\ No newline at end of file
uni_modules/uni-upgrade-center-app/utils/call-check-version.js
0 → 100644
浏览文件 @
db11835d
export
default
function
()
{
// #ifdef APP-PLUS
return
new
Promise
((
resolve
,
reject
)
=>
{
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
)
=>
{
resolve
(
e
)
},
fail
:
(
error
)
=>
{
reject
(
error
)
}
})
})
})
// #endif
// #ifndef APP-PLUS
return
new
Promise
((
resolve
,
reject
)
=>
{
reject
({
message
:
'
请在App中使用
'
})
})
// #endif
}
uni_modules/uni-upgrade-center-app/utils/check-update.js
浏览文件 @
db11835d
import
callCheckVersion
from
'
./call-check-version
'
// 推荐再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
;
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
]
});
e
.
result
.
url
=
fileList
[
0
].
tempFileURL
// 此处逻辑仅为实例,可自行编写
if
(
code
>
0
)
{
// 腾讯云和阿里云下载链接不同,需要处理一下,阿里云会原样返回
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
;
// 静默更新,只有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)
/**
* 提示升级一
* 使用 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
)
/**
* 提示升级二
* 官方适配的升级弹窗,可自行替换资源适配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
)
}
},
fail
:
(
err
)
=>
{
// TODO 云函数报错处理
console
.
error
(
err
.
message
)
}
})
});
})
}
else
if
(
code
<
0
)
{
// TODO 云函数报错处理
console
.
error
(
message
)
}
}).
catch
(
err
=>
{
// TODO 云函数报错处理
console
.
error
(
err
.
message
)
})
// #endif
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录