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; // 根据实际情况调整映射关系
  }
}
回到顶部