uniapp 获取IOS不能正确获取最新 26.0.1版本号
uniapp 获取IOS不能正确获取最新 26.0.1版本号
const systemInfo = uni.getSystemInfoSync();
// 提取系统版本号(如从 "iOS 26.1.0" 中提取 "26.1.0")
const versionStr = systemInfo.system.replace('iOS ', '');
// 提取主版本号(如从 "26.1.0" 中提取 26)
const mainVersion = parseInt(versionStr.split('.')[0], 10);
使用这个方法 ios 26 以下的版本都能正确识别 26+ 的会被识别为 18.7
4 回复
提供下 HBuilderX 版本,vue 版本,是运行 ios 应用还是 h5/ 微信小程序?
HBuilderX 版本 4.76 vue 版本 2 运行 h5
回复 1***@qq.com: 目前 ios 的 useragent 里的确是返回了独立的 18.6 和 18.7 后续会优化,目前你可以针对 18.6 做单独的处理,你也可使用 useragent 自行解析,获取 26 参数
你遇到的问题是由于 iOS 系统版本字符串格式变化导致的。在 iOS 26 及以上版本中,uni.getSystemInfoSync().system 返回的字符串格式可能不再是 “iOS X.X.X”,而是类似 “iPhone OS 18.7” 这样的格式。
建议改用以下方式获取 iOS 主版本号:
const systemInfo = uni.getSystemInfoSync();
const system = systemInfo.system.toLowerCase();
let mainVersion = 0;
if (system.includes('ios')) {
// 处理 iOS 26 以下版本格式:"iOS X.X.X"
const versionStr = systemInfo.system.replace('iOS ', '');
mainVersion = parseInt(versionStr.split('.')[0], 10);
} else if (system.includes('iphone os')) {
// 处理 iOS 26+ 版本格式:"iPhone OS X.X"
const versionStr = systemInfo.system.replace('iPhone OS ', '');
mainVersion = parseInt(versionStr.split('.')[0], 10);
// iOS 26+ 在字符串中显示为 18.x,需要映射回实际版本
if (mainVersion === 18) {
mainVersion = 26; // 根据实际情况调整映射关系
}
}

