首先声明,版本管理后端及数据库是用的uniCloud。
1.先创建一个项目,勾选启用uniCloud
支付宝云与阿里云对个人创作者比较友好,可以免费
若想在现有项目中启用uniCloud,可看下图
2.关联uniCloud云空间
(至于如何创建云空间可自行查阅,若有需要可评论区联系)
选择绑定即可
3.安装插件
选择自己的项目安装
选择自己的项目后,会让你注册page.json页面,选择注册即可。
刚注册的页面,不可放置在page.json中ages的首个(如图为正确方式)
创建完后,可在首页放置一个button按钮,可以前往预览(注意:仅仅是预览)
uni.navigateTo({
url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update'
});
4.写数据库
右键uniCloud
打开uniCloud Web控制台。打开控制台后点击“+”号创建一个数据库vesionUpdate(名字可随意)。创建后“添加记录”,添加如图几个字段(也可随意)
{
"describe": "1.修复已知问题<br>2.优化用户体验",
"edition_name": "1.0.3",//此版本号需与自己需要更新的版本号一致
"edition_number": 103,
"edition_url": ""//你自己存放更新包的地址
}
5.连接数据库获取数据
如图右键,新建云函数“getVesionUpdate”
编写云函数,返回数据即可
'use strict';
const db = uniCloud.database()
exports.main = async (event, context) => {
let data = db.collection('vesionUpdate').get()
//返回数据给客户端
return data
};
我们的需求是,打开APP就监测到是否需要版本更新,所以,我们在App.vue页面进行操作
使用你写的云函数请求数据库的数据
从插件官方文档中得知后端需要返回如下数据,所以我们先接收到数据库中的数据,再赋值
let data = {
// 版本更新内容 支持<br>自动换行
describe: versionData[0].describe,
edition_url: versionData[0].edition_url, //apk、wgt包下载地址或者应用市场地址
edition_force: 0, //是否强制更新 0代表否 1代表是
package_type: 1, //0是整包升级(apk或者appstore或者安卓应用市场) 1是wgt升级
edition_issue: 1, //是否发行 0否 1是 为了控制上架应用市场审核时不能弹出热更新框
edition_number: versionData[0].edition_number, //版本号 最重要的manifest里的版本号 (检查更新主要以服务器返回的edition_number版本号是否大于当前app的版本号来实现是否更新)
edition_name: versionData[0].edition_name, // 版本名称 manifest里的版本名称
edition_silence: 0, // 是否静默更新 0代表否 1代表是
}
既然是版本更新,那么我们肯定要获取当前app的版本,然后与要更新的版本作比较
比较后就携带参数弹出弹窗
uni.navigateTo({
url: '/uni_modules/rt-uni-update/components/rt-uni-update/rt-uni-update?obj=' +JSON.stringify(data)
});
6.最后,也是最重要的一步
将你写的云函数上传部署,如图右键,上传所有云函数(不然打包成app后,app无法使用该云函数,也就监测不到版本是否更新)
最后,要更新版本时,在数据库中改新包的链接和版本号,再次登录app,即可监测到版本更新。当然,你也可自行创作开发个版本管理平台。祝,顺利。