YXW
YXW
  • 发布:2020-07-09 17:56
  • 更新:2021-01-19 09:26
  • 阅读:1129

【报Bug】ios热更新版本号异常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 10.15.5

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: iOS

手机系统版本号: iOS 13.4

手机厂商: 苹果

手机机型: iponeX

页面类型: nvue

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://apps.apple.com/cn/app/%E6%83%9C%E5%A5%87%E5%A0%82/id1515954287

示例代码:

plus.runtime.getProperty(plus.runtime.appid, result => {
result.version // 这里获取版本号
}

操作步骤:

【!!!!安卓无此问题!!!!】
1、在应用商店下载APP(这个包的版本是2.2.0)
2、打开APP,此时会调用接口检测是否有新版本,此时发现有个2.2.1的热更新版本
3、使用uni.downloadFile下载这个wgt(这个wgt版本号是2.2.1)
4、安装plus.runtime.install
5、重启plus.runtime.restart()
6、此时获取到的版本号还是2.2.0,此时依然会验证当然版本号,导致程序无限执行此过程
7、关掉,再次启动,热更新获取到的版本号就正常了

预期结果:

获取到版本号为2.2.1

实际结果:

版本号依然是2.2.0

bug描述:

【!!!!安卓无此问题!!!!】
应用商店的安装包版本号是2.2.0,线上有个2.2.1的热更新版本,在应用商店下载后,第一次启动时,调用接口获取最新版本为2.2.1,此时下载wgt(这个wgt版本号是2.2.1)安装并重启plus.runtime.restart(),重启后会重新调用onLaunch方法(版本更新检查就在这个方法里),再获取版本号,还是2.2.0,然后调用接口验证最新版....然后下载重启...下载重启...下载重启...循环了,但是关闭后,再次启动热更新就正常了

2020-07-09 17:56 负责人:无 分享
已邀请:
吴理歌

吴理歌

将打包好的wgt文件后缀名改为zip,打开后看看版本号是否是2.2.1呢?

  • YXW (作者)

    是2.2.1

    2020-07-09 18:04

chenli

chenli

写个配置文件来管理当前的versionCode值用他来检查版本更新

  • YXW (作者)

    那官方提供的API还有什么意义呢

    2020-07-09 18:05

  • chenli

    回复 YXW: 只是提供一个实现方案。接口不能实现就换个方法实现!

    2020-07-09 18:14

CLP

CLP

你说获取的版本号还是之前的2.2.0,那资源文件是否更新成功?

  • YXW (作者)

    我刚刚又试了一下,是wgt就没有安装成功,但是在plus.runtime.install走了成功的回调,也plus.runtime.restart了

    2020-07-09 18:45

  • CLP

    回复 YXW: 你怎么确定wgt就没有安装成功的? 没有报错吗?https://ask.dcloud.net.cn/article/35667你是不是违反了注意事项和不支持的情况里的说明,好好检查下。

    2020-07-09 18:54

  • YXW (作者)

    回复 CLP:不可能,安卓都没有问题的,ios安装成功后提示:{省略...,"version":"2.2.1","versionCode":"1020"} ,也重启了,就是重启后获取的还是2.2.0

    2020-07-09 19:13

  • YXW (作者)

    回复 CLP:说白了就是从应用商店下载后第一次打开热更新,正常下载、安装、重启,但是资源是没有变的,必须吧整个APP关掉,再进,从新走这个方法,就没问题了,仅仅就是第一次!!!!!

    2020-07-09 19:21

  • CLP

    回复 YXW: app store安装上不会提示热更新啊?

    2020-07-09 19:43

  • CLP

    你录个视频来看看

    2020-07-09 19:44

  • YXW (作者)

    回复 CLP: 热更新没有提示,在显示启动图时检查版本并热更新,从商店第一次下载打开是一直卡在启动图这就是问题

    2020-07-09 21:59

  • YXW (作者)

    回复 CLP: 能解决下吗,这个太影响我们了,热更新完全就不能用了

    2020-07-10 09:46

  • CLP

    回复 YXW: 视频都不录制一个来,我怎么测试发现问题,我得有环境复现问题,才能调试啊

    2020-07-10 13:10

  • YXW (作者)

    回复 CLP: 录屏已发上去了,第一个是安卓,wgt下载速度慢,打开会有几秒延迟正常,第二个是ios,安装完后第一次打开是进不去的,退出之后再进就可以了

    2020-07-10 14:04

  • CLP

    回复 YXW: 不从appstore下载,用基座跑起来,然后热更新也是同样的问题吗?你QQ多少我加你QQ

    2020-07-10 14:13

  • YXW (作者)

    回复 CLP: appstore我把热更新版本给删了,要不然新用户下载后都打不开,自带基座没有这个问题,要打包后才会出现,QQ:102141070

    2020-07-10 14:16

  • YXW (作者)

    回复 CLP: 我录屏是用的测试服

    2020-07-10 14:16

  • YXW (作者)

    回复 CLP: 我怎么没收到你的添加QQ申请呢?

    2020-07-10 16:15

CLP

CLP

plus.runtime.getProperty(plus.runtime.appid, result => {
result.version // 这里获取版本号
} 你是什么时候获取的?确定启动成功了吗?

Andy_007

Andy_007

也是怕出现类似情况,不知道有没有被下架的风险

chenli

chenli

iOS 端热更新后 versionCode 没有更新,HX 2.9.2 版本已修复此问题
相关问题

xiaojun617

xiaojun617

使用plus.runtime.version获取不到热更后的版本号,要通过 plus.runtime.getProperty 才能正确获取到,看下图

<template>  
  <view>  
    plus.runtime.getProperty:{{ widgetInfo }}  
    plus.runtime:{{ runtime }}  
  </view>  
</template>  

<script>  
export default {  
  data() {  
    return {  
      widgetInfo: '',  
      runtime: '',  
    }  
  },  
  created() {  
    // #ifdef APP-PLUS  
    plus.runtime.getProperty(plus.runtime.appid, widgetInfo => {  
      this.widgetInfo = JSON.stringify(widgetInfo)  
    })  
    this.runtime = plus.runtime  
    // #endif  
  },  
}  
</script>
  • CLP

    dui

    2021-01-19 11:54

  • YXW (作者)

    回复 CLP:对什么对,我就是用的plus.runtime.getProperty

    2021-01-19 13:15

  • YXW (作者)

    回复 chenli: 我知道啊

    2021-01-19 13:48

  • chenli

    热更新应用,实际的版本号是不会改变的。要通过 plus.runtime.getProperty 才能是热更新后的信息。

    2021-01-19 13:52

  • CLP

    回复 YXW: 那你到底啥问题???????

    2021-01-19 18:37

该问题目前已经被锁定, 无法添加新回复