uniapp开发实现 app热更新

啊~时隔多月终于闲下来了。最近整理了下资料发现热更新在app开发是经常见的,基本必备而且确实很方便,所以就总结了点东西给大家看看,有问题可以一起讨论

一、实现热更新需要那些东西

需要服务器存放更新包资源,后端提供接口用于检测当前版本是否为最新版本。(增删改查) 热更新的流程其实很简单,如下图所示

graph LR
A(用户进入应用) --> C{检测是否有更新}
C --> D(需要更新)
D --> E(请求资源更新包)
E --> F(下载安装)
F --> I(下载完成重启)
F --> J(取消下载)
C -->H(不需要更新)
H-->G(正常运行)
I --> G
J --> G 

二、具体流程代码

1.获取当前应用app版本

// 保存 app 版本信息
// #ifdef APP-PLUS
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo)=> {// console.log('widgetInfo', widgetInfo);this.version = widgetInfo.version;
});
// #endif 

2.获取服务器上更新包的资源(包含下载链接,更新包版本),比较当前版本是否为最新版本,不是则弹出提示更新最新版本

checkWgtFun() {//loginApi.getPatchManage() 获取更新包接口loginApi.getPatchManage().then(res=> {console.log('检查更新包', res);if(res.code == 200) {let result = res.data.versionNum // 更新包版本if(this.version.substr(0, 3) * 1 >= result.substr(0, 3) * 1){this.$toast('当前为最新版本');return} if(this.version.replace(/\./g, "") * 1 >= result.replace(/\./g, "") * 1){this.$toast('当前为最新版本');return}uni.showModal({title: '提示',content: '发现有新版本可以升级',cancelText: '取消更新',confirmText: '立即更新',success: res1 => {if (res1.confirm) {console.log('用户点击确定');// 补丁下载安装// this.versionNum=res.data.versionNumthis.downWgt(res.data.patchUrl)} else if (res1.cancel) {console.log('用户点击取消');}},fail: (err
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值