uni-app 热更新的坑,请求更新资源的接口数据拿到了,为什么更新不了?

1.注意:热更新不适合两位同事操作,否则会出现无法更新资源的问题

在这里插入图片描述

  • 每一个开发者都有不同的 DCloud appid(以后简称 appid) 是 DCloud 应用的唯一标识
  • A的appid不能给B使用
  • 热更新(wgt升级)通过 appid 来覆盖资源

为什么说 热更新是通过appid来覆盖资源的

  • 比如A把生成的wgt文件上传到服务器上,版本是1.0.2。。。 那么wgt上的appid是A的
  • 如果B想测试更新资源,用自己的电脑生成一个apk安装在自己的手机上,版本是1.0.1

注意:

  • 这个时候B生成的apk是自己的appid
  • 然而在服务器上的新资源wgt上的appid是A的
  • 这个时候就出现问题了,因为热更新是通过appid来覆盖资源的
  • 匹配appid不正确,导致不能更新

解决方法:

  • 把在服务器上的wgt文件换成B这里生成放上去,版本1.0.2
  • 然后自己在打一个apk安装在手机,版本是1.0.1
  • 这个时候会更新

最后说明:这里说的情况是在手机安装apk上运行的。在线调试没有这种情况。

uni-app热更新可以通过服务器存储最新版本号,前端进行查询并匹对版本号实现。具体实现步骤如下: 1.在服务器中存储最新版本号。 2.前端在应用首次进入时进行请求版本号,并与本地版本号进行匹对。 3.如果版本号一致,则不提示更新;如果版本号不一致,则提示进行更新操作。 4.执行更新操作,可以通过下载热更新包并进行安装实现。 5.在进行热更新之前,需要进行云打包并修改mainifest.json文件中的版本号,将其修改为低于热更新包的版本号。 以下是一个简单的uni-app热更新的示例代码: ```javascript // 获取服务器最新版本号 const latestVersion = await fetchLatestVersion(); // 获取本地版本号 const localVersion = getAppVersion(); // 版本号匹对 if (latestVersion !== localVersion) { // 提示更新操作 uni.showModal({ title: '发现新版本', content: '是否立即更新?', success: function (res) { if (res.confirm) { // 下载热更新包并进行安装 downloadAndUpdate(); } } }); } // 下载热更新包并进行安装 function downloadAndUpdate() { // 下载热更新包 const hotUpdate = uni.downloadFile({ url: 'https://www.example.com/hot-update.zip', success: function (res) { // 安装热更新uni.applyUpdate({ packagePath: res.tempFilePath, success: function () { // 热更新成功 }, fail: function () { // 热更新失败 } }); }, fail: function () { // 下载热更新包失败 } }); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值