统一管理App及App在
Android、iOS平台上App安装包和wgt资源包的发布升级本插件为升级中心Admin后台管理系统,前台检查更新函数请点击查看 uni-upgrade-center-app
uniCloud 是 DCloud 联合阿里云、腾讯云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台,更多请参考uniCloud 文档。
升级中心是一款uniCloud admin插件,负责App版本更新业务。包含后台管理界面、更新检查逻辑,App内只要调用弹出提示即可。
升级中心有以下功能点:
只需导入插件,初始化数据库即可拥有上述功能。
您也可以自己修改逻辑自定义数据库字段,和随意定制 UI 样式。
使用HBuilderX 3.1.0+,因为要使用到uni_modules
使用已有uniCloud-admin项目或新建项目:打开HBuilderX -> 文件 -> 新建 -> 项目 -> uni-app 选择 uniCloud admin模板,键入一个名字,确定
鼠标右键选择关联云服务空间和运行云服务空间初始化向导
在插件市场打开本插件页面,在右侧点击使用 HBuilderX 导入插件,选择 uniCloud admin 项目点击确定
等待下载安装完毕。由于本插件依赖一些uni-ui插件,下载完成后会显示合并插件页面,自行选择即可
找到/uni_modules/uni-upgrade-center/uniCloud/cloudfunctions/upgrade-center,右键上传部署
找到/uni_modules/uni-upgrade-center/uniCloud/database/db_init.json,右键初始化数据库
在pages.json中添加页面路径json //此结构与uniCloud admin中的pages.json结构一致 { "pages": [ // ……其他页面配置 { "path": "uni_modules/uni-upgrade-center/pages/version/list", "style": { "navigationBarTitleText": "版本列表" } }, { "path": "uni_modules/uni-upgrade-center/pages/version/add", "style": { "navigationBarTitleText": "新版发布" } }, { "path": "uni_modules/uni-upgrade-center/pages/version/detail", "style": { "navigationBarTitleText": "版本信息查看" } } ] }
在manifest.json -> 源码视图中添加以下配置:js "networkTimeout":{ "uploadFile":1200000 //ms, 如果不配置,上传大文件可能会超时 }
运行项目到Chrome
运行起来uniCloud admin,菜单管理模块会自动读取/uni_modules/uni-upgrade-center/menu.json文件中的菜单配置,生成【待添加菜单】,选中升级中心,点击添加选中的菜单即可
添加成功后,就可以在左侧的菜单栏中找到升级中心菜单
在进入升级中心之前:
uni-admin的应用管理中添加一个应用,才可以在升级中心中发布对应应用的版本。/uni_modules/uni-upgrade-center/pages/utils.js中修改defaultDisplayApp字段来设置默认显示应用的appid。由于插件依赖的uni-ui的一些组件,建议右键/uni_modules/uni-upgrade-center安装一下第三方依赖,否则可能会出现一些问题
运行在uniCloud,由于本插件使用了clientDB,因此可能需要配置一下uni-config-center插件关于uni-id的配置信息。如提示公用模块uni-id缺少配置信息请这样做:
/uniCloud/cloudfunctions/common/uni-config-center/下创建uni-id文件夹,文件夹内创建config.json文件。config.json中。**注:一定要把注释去除!**应用管理,这里展示你所添加的 App,点击右上角 新增 可以新增一个 App
修改应用信息或者删除该应用。Tips
- 删除应用会把该应用的所有版本记录同时删除
发布新版,可以发布原生App安装包和wgt资源包。在左上角点击下拉列表,可以切换展示应用。
包地址
云存储,会自动将地址填入该项- 也可以手动填写一个地址,就可以不用再上传文件
- 如果是发布`苹果`版本,包地址则为 应用在`AppStore的链接`
强制更新
上线发行
- 同时只可有一个线上发行版,线上发行不可更设为下线。未上线可以设为上线发行并自动替换当前线上发行版
- 修改当前包为上线发行,自动替换当前线上发行版
原生App安装包 一致
原生App最低版本
- 如果此次打包wgt使用了`新的api`或者打包了`新的模块`,则在发布 `wgt资源包` 的时候,将此版本更新为本次版本
- 如果已有正式版`wgt资源包`,则本次新增会自动带出
静默更新
Tips
pages/system/upgradecenter/version/add.vue中有版本对比函数(compare)。
数据表基于 openDB 规范,它约定了一个标准用户表的表名和字段定义,并且基于 nosql 的特性,可以由开发者自行扩展字段。
本项目用到了 2 个表:
点击升级中心,会进入应用管理列表,在这里你可以新增应用,或者在应用详情中查看、修改或删除一个已经录入的应用。
在应用管理列表中点击某个应用的版本管理,进入该应用的所有版本记录。列表排序为:先排序已上线版本,剩下已下线版本根据创建时间排列。
在应用版本列表中点击详情,即可进入该版本的信息详情中查看、修改或删除该记录。
Tips
- 升级中心设计之初就支持iOS的wgt更新
- iOS的wgt更新肯定是违反apple政策的,注意事项:
- 审核期间请不要弹窗升级
- 升级完后尽量不要自行重启
- 尽量使用静默更新
- 可以通过以下修改支持iOS的wgt更新:
> \uni_modules\uni-upgrade-center\pages\mixin\version_add_detail_mixin.js
>
> 将 data 中的 enableiOSWgt: false 中 改为 enableiOSWgt: true
常见问题
- 以下问题可以通过升级插件版本解决:
- createdate不与默认值匹配
- ["create_date"]在数据库中并不存在
- 提交的字段["dirty_data"]在数据库中并不存在
- 集合[opendb-app-list]对应的schema内存在错误,详细信息:opendb-app-list表对应的schema名称冲突,这是什么意思呢