uniapp热更新详细流程(App端)

首先声明,版本管理后端及数据库是用的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,即可监测到版本更新。当然,你也可自行创作开发个版本管理平台。祝,顺利。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp app开发热更新可以通过以下步骤实现: 1. 在uni-app项目的根目录下创建一个名为`update`的文件夹,用于存放热更新的资源文件。 2. 在`update`文件夹中创建一个名为`manifest.json`的文件,用于记录热更新的版本信息和资源文件列表。示例内容如下: ```json { "version": "1.0.0", "packages": [ { "path": "update.zip", "md5": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" } ] } ``` 其中,`version`表示当前热更新的版本号,`packages`数组中的每个对象表示一个资源包,`path`表示资源包的路径,`md5`表示资源包的MD5值。 3. 将需要热更新的资源文件打包成一个zip文件,命名为`update.zip`,并放置在`update`文件夹中。 4. 在uni-app项目的`main.js`文件中添加热更新的代码。示例代码如下: ```javascript import { checkUpdate, downloadUpdate, applyUpdate } from 'uni-updater'; // 检查是否有新版本 checkUpdate({ url: 'http://example.com/update/manifest.json', // 热更新资源的manifest.json文件的URL success: (res) => { if (res.hasUpdate) { // 下载新版本资源 downloadUpdate({ url: 'http://example.com/update/update.zip', // 热更新资源的zip文件的URL success: (res) => { // 应用新版本资源 applyUpdate({ success: () => { // 热更新成功 }, fail: (err) => { // 热更新失败 } }); }, fail: (err) => { // 下载资源失败 } }); } }, fail: (err) => { // 检查更新失败 } }); ``` 以上代码中,`checkUpdate`函数用于检查是否有新版本的热更新资源,`downloadUpdate`函数用于下载新版本的热更新资源,`applyUpdate`函数用于应用新版本的热更新资源。 请注意,以上代码中的URL需要替换为实际的热更新资源的URL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值