提交 eb56204e 作者: 方治民
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
- [x] 集成 [Pont](https://github.com/alibaba/pont) - [x] 集成 [Pont](https://github.com/alibaba/pont)
- [x] 集成 [Pinia](https://pinia.vuejs.org/) - [x] 集成 [Pinia](https://pinia.vuejs.org/)
- [x] 集成 [vue-i18n](https://github.com/intlify/vue-i18n-next) - [x] 集成 [vue-i18n](https://github.com/intlify/vue-i18n-next)
- [x] UI 组件集成 [FirstUI-UniApp](https://gitlab.yiring.com/open/first-ui) - [x] UI 组件集成 [FirstUI-UniApp](https://gitlab.yiring.com/open/first-ui)[uni-ui](https://uniapp.dcloud.net.cn/component/uniui/quickstart.html)
- [x] 接入 [消息推送](https://uniapp.dcloud.net.cn/unipush.html)
- [x] 接入 [APP 升级中心](https://uniapp.dcloud.net.cn/uniCloud/upgrade-center.html)
- [ ] 适配上传/下载接口的自动化生成模板(包装 uni.uploadFile 与 uni.downloadFile 方法实现) - [ ] 适配上传/下载接口的自动化生成模板(包装 uni.uploadFile 与 uni.downloadFile 方法实现)
- [ ] 接入 [消息推送](https://uniapp.dcloud.net.cn/unipush.html)
- [ ] 接入 [APP 升级中心](https://uniapp.dcloud.net.cn/uniCloud/upgrade-center.html)
...@@ -40,6 +40,9 @@ export function configComponentsImportPlugin(): Plugin { ...@@ -40,6 +40,9 @@ export function configComponentsImportPlugin(): Plugin {
if (name.startsWith('fui-')) { if (name.startsWith('fui-')) {
return path.resolve(__dirname, `src/components/firstui/${name}/${name}.vue`).replaceAll('\\', '/') return path.resolve(__dirname, `src/components/firstui/${name}/${name}.vue`).replaceAll('\\', '/')
} }
// if (name.startsWith('uni-')) {
// return `@dcloudio/uni-ui/lib/${name}/${name}.vue`
// }
}, },
], ],
}) })
......
...@@ -64,44 +64,45 @@ ...@@ -64,44 +64,45 @@
} }
}, },
"dependencies": { "dependencies": {
"@dcloudio/uni-app": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-app": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-app-plus": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-app-plus": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-components": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-components": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-h5": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-h5": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-alipay": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-alipay": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-baidu": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-baidu": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-kuaishou": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-kuaishou": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-lark": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-lark": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-qq": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-qq": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-toutiao": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-toutiao": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-mp-weixin": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-mp-weixin": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-quickapp-webview": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-quickapp-webview": "^3.0.0-alpha-3060820221027004",
"@vue/runtime-core": "^3.2.41", "@dcloudio/uni-ui": "^1.4.23",
"@vueuse/core": "^9.4.0", "@vue/runtime-core": "3.2.41",
"axios": "^1.1.3", "@vueuse/core": "^8.9.4",
"axios": "^0.26.1",
"dayjs": "^1.11.6", "dayjs": "^1.11.6",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"mockjs": "^1.1.0", "mockjs": "^1.1.0",
"pinia": "^2.0.23", "pinia": "^2.0.23",
"qs": "~6.9.7", "qs": "~6.9.7",
"vue": "^3.2.41", "vue": "3.2.41",
"vue-i18n": "^9.2.2", "vue-i18n": "^9.2.2",
"vue-types": "^4.2.1" "vue-types": "^4.2.1"
}, },
"devDependencies": { "devDependencies": {
"@commitlint/cli": "^17.2.0", "@commitlint/cli": "^17.2.0",
"@commitlint/config-conventional": "^17.2.0", "@commitlint/config-conventional": "^16.2.4",
"@dcloudio/types": "^3.0.15", "@dcloudio/types": "^3.0.19",
"@dcloudio/uni-automator": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-automator": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-cli-shared": "^3.0.0-alpha-3060820221027003", "@dcloudio/uni-cli-shared": "^3.0.0-alpha-3060820221027004",
"@dcloudio/uni-helper-json": "^1.0.13", "@dcloudio/uni-helper-json": "^1.0.13",
"@dcloudio/vite-plugin-uni": "^3.0.0-alpha-3060820221027003", "@dcloudio/vite-plugin-uni": "^3.0.0-alpha-3060820221027004",
"@types/lodash-es": "^4.17.6", "@types/lodash-es": "^4.17.6",
"@types/mockjs": "^1.0.7", "@types/mockjs": "^1.0.7",
"@types/prettier": "^2.7.1", "@types/prettier": "^2.7.1",
"@types/qs": "^6.9.7", "@types/qs": "^6.9.7",
"@typescript-eslint/eslint-plugin": "^5.42.0", "@typescript-eslint/eslint-plugin": "^5.42.1",
"@typescript-eslint/parser": "^5.42.0", "@typescript-eslint/parser": "^5.42.1",
"commitizen": "^4.2.5", "commitizen": "^4.2.5",
"conventional-changelog-cli": "^2.2.2", "conventional-changelog-cli": "^2.2.2",
"cz-conventional-changelog": "^3.3.0", "cz-conventional-changelog": "^3.3.0",
...@@ -109,7 +110,7 @@ ...@@ -109,7 +110,7 @@
"cz-git": "^1.3.12", "cz-git": "^1.3.12",
"czg": "^1.3.12", "czg": "^1.3.12",
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"eslint": "^8.26.0", "eslint": "^8.27.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-vue": "^9.7.0", "eslint-plugin-vue": "^9.7.0",
...@@ -118,25 +119,26 @@ ...@@ -118,25 +119,26 @@
"lint-staged": "^13.0.3", "lint-staged": "^13.0.3",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
"pont-engine": "^1.5.0", "pont-engine": "^1.5.2",
"postcss": "^8.4.18", "postcss": "^8.4.18",
"postcss-html": "^1.5.0", "postcss-html": "^1.5.0",
"postcss-less": "^6.0.0", "postcss-less": "^6.0.0",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"sort-package-json": "^2.0.0", "sass": "^1.56.1",
"sort-package-json": "^1.57.0",
"stylelint": "^14.14.1", "stylelint": "^14.14.1",
"stylelint-config-html": "^1.1.0", "stylelint-config-html": "^1.1.0",
"stylelint-config-prettier": "^9.0.3", "stylelint-config-prettier": "^9.0.4",
"stylelint-config-recommended": "^9.0.0", "stylelint-config-recommended": "^8.0.0",
"stylelint-config-standard": "^29.0.0", "stylelint-config-standard": "^26.0.0",
"stylelint-order": "^5.0.0", "stylelint-order": "^5.0.0",
"stylus": "^0.59.0", "stylus": "^0.59.0",
"terser": "^5.15.1", "terser": "^5.15.1",
"typescript": "^4.8.4", "typescript": "^4.8.4",
"unplugin-auto-import": "^0.11.4", "unplugin-auto-import": "^0.11.4",
"unplugin-vue-components": "^0.22.9", "unplugin-vue-components": "^0.22.9",
"vite": "^3.2.2", "vite": "3.2.2",
"vue-eslint-parser": "^9.1.0" "vue-eslint-parser": "^9.1.0"
}, },
"engines": { "engines": {
......
<script setup lang="ts"> <script setup lang="ts">
// import * as Push from '@/utils/push'
import { checkUpgrade } from '@/utils/upgrade'
onLaunch(() => { onLaunch(() => {
console.log('App Launch') console.log('App Launch')
// 版本更新检查
checkUpgrade()
// 清除消息角标
// Push.setBadge()
// 监听在线消息
// Push.listenMessage()
}) })
onShow(() => { onShow(() => {
......
...@@ -53,7 +53,13 @@ ...@@ -53,7 +53,13 @@
}, },
/* SDK配置 */ /* SDK配置 */
"sdkConfigs" : { "sdkConfigs" : {
"ad" : {} "ad" : {},
"push" : {
"unipush" : {
"version" : "2",
"offline" : false
}
}
} }
} }
}, },
......
{ {
"pages": [ "pages": [
//pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages // pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
{ {
"path": "pages/index/index", "path": "pages/index/index",
"style": { "style": {
"navigationBarTitleText": "Basic APP" "navigationBarTitleText": "Basic APP"
} }
},
// === 版本更新 ===
{
"path": "uni_modules/uni-upgrade-center-app/pages/upgrade-popup",
"style": {
"app-plus": {
"animationDuration": 200,
"animationType": "fade-in",
"background": "transparent",
"backgroundColorTop": "transparent",
"popGesture": "none",
"scrollIndicator": false,
"titleNView": false
},
"disableScroll": true
}
} }
], ],
"easycom": { "easycom": {
"autoscan": true, "autoscan": true,
"custom": { "custom": {
"^fui-(.*)": "@/components/firstui/fui-$1/fui-$1.vue" // https://doc.firstui.cn/docs/introduce.html
"^fui-(.*)": "@/components/firstui/fui-$1/fui-$1.vue",
// https://ext.dcloud.net.cn/plugin?id=55#detail
"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue"
} }
}, },
"globalStyle": { "globalStyle": {
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
<view class="info"> <view class="info">
<text class="title">{{ title }}</text> <text class="title">{{ title }}</text>
<text class="title">{{ $t('app.hello') }}</text> <text class="title">{{ $t('app.hello') }}</text>
<uni-icons type="hand-up" size="30" />
</view> </view>
<fui-footer isFixed :text="`Copyright © ${year} YiRing.com`" /> <fui-footer isFixed :text="`Copyright © ${year} YiRing.com`" />
</view> </view>
......
## 0.6.1(2022-08-17)
- 修复 后台添加应用市场,但都没有启用的情况下报错的Bug (需要 uni-admin 1.9.3+)
## 0.6.0(2022-07-19)
- 新增 支持多应用商店配置(需要 uni-admin 1.9.3+)
## 0.4.1(2022-05-27)
- 修复 上版引出的报错问题
## 0.4.0(2022-05-27)
- 新增 Android 支持跳转手机自带商店,填写升级包地址时请填写跳转商店链接
- 新增 改为云对象调用方式,使用更直观
## 0.3.3(2022-04-14)
- 修复 调用 check-update,当 code 为 0 时没有回调
## 0.3.2(2022-01-12)
- 优化显示逻辑
## 0.3.1(2021-11-24)
- 修复 vue3 上图片不显示的Bug
## 0.3.0(2021-11-18)
- 移除 wgt 安装成功后提示,防止重启过快弹框不消失
## 0.2.2(2021-08-25)
- 兼容vue3.0
## 0.2.1(2021-07-26)
- 修复 使用腾讯云并手动填写地址时,导致下载链接失效的bug
## 0.2.0(2021-07-13)
- 更新文档 关于报错local_storage_key 为空,请不要将页面路径设置为pages.json中第一项
## 0.1.9(2021-06-28)
- 更新文档
- 修复 wgt安装失败时,按钮状态不对
## 0.1.8(2021-06-16)
- 修复 跳转安装时,导致上次下载的apk还没安装就被删掉的bug
## 0.1.7(2021-06-03)
- 修改 移除static中的图片
## 0.1.6(2021-06-03)
- 修改 下载更新按钮使用CSS渐变色
## 0.1.5(2021-04-22)
- 更新check-update函数。现在返回一个Promise,有更新时成功回调,其他情况错误回调
## 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)
- 修复 腾讯云空间下载链接不能下载问题
## 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)
- 修复低版本安卓上进度条错位
## 0.0.4(2021-04-01)
- 更新readme
- 修复check-update语法错误
## 0.0.3(2021-04-01)
- 新增前台更新弹框,详见readme
- 更新前台检查更新方法
## 0.0.2(2021-03-29)
- 更新文档
- 移除 dependencies
## 0.0.1(2021-03-25)
- 升级中心前台检查更新
{
"displayName": "升级中心 uni-upgrade-center - App",
"version": "0.6.1",
"description": "uni升级中心 - 客户端检查更新",
"keywords": [
"uniCloud",
"update",
"升级",
"wgt"
],
"repository": "https://gitee.com/dcloud/uni-upgrade-center/tree/master/uni_modules/uni-upgrade-center-app",
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "插件不采集任何数据",
"permissions": "无"
},
"npmurl": "",
"type": "unicloud-template-page"
},
"id": "uni-upgrade-center-app",
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y"
},
"client": {
"App": {
"app-vue": "y",
"app-nvue": "u"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "u",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
},
"Vue": {
"vue2": "y",
"vue3": "y"
}
}
}
}
}
## 升级中心 - app插件与 `uni-admin` 版本关系
### `uni-admin >= 1.9.3`:云函数 `checkVersion` 废弃,使用 uni-admin 自带的 `uni-upgrade-center` 云函数。
# uni-upgrade-center - App
### 概述
> 统一管理App及App在`Android`、`iOS`平台上`App安装包`和`wgt资源包`的发布升级
> uni升级中心分为业务插件和后台管理插件。本插件为业务插件,包括uni升级中心客户端检查更新的前后端逻辑。后台管理系统另见 [uni-upgrade-center - Admin](https://ext.dcloud.net.cn/plugin?id=4470)
### uni升级中心 - 客户端检查更新插件
- 一键式检查更新,同时支持整包升级与wgt资源包更新
- 好看、实用、可自定义的客户端提示框
## 安装指引
1. 依赖数据库`opendb-app-versions`,如果没有此库,请在云服务空间中创建。
2. 使用`HBuilderX 3.1.0+`,因为要使用到`uni_modules`
3. 在插件市场打开本插件页面,在右侧点击`使用 HBuilderX 导入插件`,选择要导入的项目点击确定
4. 绑定一个服务空间。自 `0.6.0` 起,依赖 `uni-admin 1.9.3+``uni-upgrade-center 云函数`,请和 uni-admin 项目关联同一个服务空间
5. 找到`/uni_modules/uni-upgrade-center-app/uniCloud/cloudfunctions/check-version`,右键上传部署。自 `0.6.0` 起,依赖 `uni-admin 1.9.3+``uni-upgrade-center 云函数`,插件不再单独提供云函数,这样可以省下一个云函数名额。
6.`pages.json`中添加页面路径。**注:请不要设置为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到需要用到的地方,调用一下即可
1. 默认使用当前绑定的服务空间,如果要请求其他服务空间,可以使用其他服务空间的 `callFunction`[详情](https://uniapp.dcloud.io/uniCloud/cf-functions.html#call-by-function-cross-space)
8. 升级弹框可自行编写,也可以使用`uni.showModal`,或使用现有的升级弹框样式,如果不满足UI需求请自行替换资源文件。在`utils/check-update.js`中都有实例。
9. wgt更新时,打包前请务必将manifest.json中的版本修改为更高版本。
### 更新下载安装`check-update.js`
*该函数在utils目录下*
1. 如果是静默更新,则不会打开更新弹框,会在后台下载后安装,下次启动应用生效
2. 如果是 iOS,则会直接打开AppStore的链接
3. 其他情况,会将`check-version`返回的结果保存在localStorage中,并跳转进入`upgrade-popup.vue`打开更新弹框
### 检查更新函数`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 平台
**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中
### 工具类 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
- 返回结果:
|code|message|
|:-:|:-:|
|0|当前版本已经是最新的,不需要更新|
|101|wgt更新|
|102|整包更新|
|-101|暂无更新或检查appid是否填写正确|
|-102|请检查传参是否填写正确|
\ No newline at end of file
export default function() {
// #ifdef APP-PLUS
return new Promise((resolve, reject) => {
plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {
const data = {
action: 'checkVersion',
appid: plus.runtime.appid,
appVersion: plus.runtime.version,
wgtVersion: widgetInfo.version
}
console.log("data: ",data);
uniCloud.callFunction({
name: 'uni-upgrade-center',
data,
success: (e) => {
console.log("e: ", e);
resolve(e)
},
fail: (error) => {
reject(error)
}
})
})
})
// #endif
// #ifndef APP-PLUS
return new Promise((resolve, reject) => {
reject({
message: '请在App中使用'
})
})
// #endif
}
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)
}
})
return
} else if (code < 0) {
// TODO 云函数报错处理
console.error(message)
return reject(e)
}
return resolve(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
});
});
}
});
}
});
}
export function setBadge(number = 0) {
// #ifdef APP-PLUS
// 清除消息角标
plus.runtime.setBadgeNumber(number)
if (plus.os.name.toLowerCase() == 'ios') {
// 导入个推原生类
const GeTuiSdk = plus.ios.importClass('GeTuiSdk')
GeTuiSdk?.setBadge(number)
}
// #endif
}
export function listenMessage() {
// 监听在线消息
uni.onPushMessage((res) => {
if (res.type !== 'receive') {
return
}
// 创建本地消息
uni.createPushMessage(res.data)
})
}
// #ifdef APP-PLUS
import checkVersion from '@/uni_modules/uni-upgrade-center-app/utils/check-update'
// #endif
export function checkUpgrade() {
// #ifdef APP-PLUS
// 版本更新检查
checkVersion()
// #endif
}
...@@ -47,7 +47,7 @@ export default ({ mode }: ConfigEnv): UserConfig => { ...@@ -47,7 +47,7 @@ export default ({ mode }: ConfigEnv): UserConfig => {
author: pkg.author, author: pkg.author,
lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), lastBuildTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
}, },
'process.env': {}, 'process.env': process.env,
}, },
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论