uni-app 云端打包 plus.runtime.getProperty 获取 versionCode 在 ios 平台出现错误
uni-app 云端打包 plus.runtime.getProperty 获取 versionCode 在 ios 平台出现错误
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Mac | 11.4 | HBuilderX |
| iOS | IOS 14 | |
产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
HBuilderX版本号:3.1.18
手机系统:iOS
手机系统版本号:IOS 14
手机厂商:苹果
手机机型:iphone 12
页面类型:vue
打包方式:云端
示例代码:
await new Promise((resolve, reject) => {
plus.runtime.getProperty(plus.runtime.appid, info => {
// console.log(info,plus.runtime.versionCode)
versionCode = parseInt(info.versionCode)
Sysinfo = info
resolve(info)
})
})
更多关于uni-app 云端打包 plus.runtime.getProperty 获取 versionCode 在 ios 平台出现错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
此问题产生的原因是由于安心打包的时候 manifest.json 配置文件没有替换成功导致的,HBuilderX 3.2.0 版本已修复此问题
更多关于uni-app 云端打包 plus.runtime.getProperty 获取 versionCode 在 ios 平台出现错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是 versionName 还是 versionCode? 把 ipa 包上传一下看看
附件无法上传 大小限制了
回复 DCloud_iOS_XHY: 包里的info.plist中的对应都没问题,只有通过api获取的有问题
回复 6***@qq.com: 你这个包是自己使用离线SDK打的包吧,应用资源 manifest.json 中版本好写的就是 1.1.1 另外,我看你今天上午使用云打包过,那个包是正常的吧
回复 DCloud_iOS_XHY: 不过最新打包的是正常了
回复 DCloud_iOS_XHY: 最新版本的是好了,能确定的是6月27号之前打的包都是这种情况,Pandora中的manifest.json的版本都是1.1.1
回复 DCloud_iOS_XHY: 我测出来了,连续升版本安心打包就会出现这个问题,你们测测看吧
目前连续升版本的安心打包,iOS会有包里的manifest.json不会替换为新版本manifest.json的问题,
如:当前安心打包1.1.1版本,之后又打包1.1.2版本(安心打包),就会出现1.1.2版本内部plus.runtime.getPerporty获取的
版本号为1.1.1(因为包里的apps目录中的manifest.json没有进行替换),具体结果还要等官方回复
好的,我们按照这个方式在排查一下问题
我现在不用安心打包这个功能了,还是使用传统打包
回复 6***@qq.com: 3.2.0版本已修复此问题
在 iOS 平台使用云端打包时,plus.runtime.getProperty 获取 versionCode 出现错误是因为 iOS 的版本号机制与 Android 不同。iOS 使用 CFBundleVersion(构建版本号),而 Android 使用 versionCode(整型版本代码)。在 iOS 上,versionCode 可能返回 null 或未定义,导致 parseInt 转换出错。
解决方法:
- 检查返回值类型:在 iOS 中,
info.versionCode可能不存在,建议使用info.version(对应CFBundleShortVersionString,即用户可见的版本号)或检查info对象中的其他属性。 - 添加平台判断:通过
uni.getSystemInfoSync().platform判断当前平台,在 iOS 上使用info.version替代versionCode。 - 错误处理:在解析前添加类型检查,避免
parseInt对非数值操作。
示例修改:
plus.runtime.getProperty(plus.runtime.appid, info => {
let versionCode;
if (uni.getSystemInfoSync().platform === 'ios') {
versionCode = info.version; // 使用版本字符串
} else {
versionCode = parseInt(info.versionCode) || 0;
}
// 处理 versionCode
});


