You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Swift获取iOS系统构建版本字符串(非应用构建版本)?

获取iOS系统构建版本的Swift实现

嘿,刚好知道怎么解决这个问题!UIDevice.current.systemVersion确实只能拿到主版本号(比如"11.3"),要获取括号里的构建字符串(比如"15E216"),得借助底层的sysctlbyname函数来读取系统参数。

具体实现方法

你可以给UIDevice写个扩展,把获取构建版本的逻辑封装起来,这样调用起来更顺手:

import UIKit

extension UIDevice {
    var systemBuildVersion: String {
        var bufferSize = 0
        // 先查询需要的缓冲区大小
        sysctlbyname("kern.osversion", nil, &bufferSize, nil, 0)
        var buffer = [CChar](repeating: 0, count: bufferSize)
        // 读取系统构建版本字符串
        sysctlbyname("kern.osversion", &buffer, &bufferSize, nil, 0)
        return String(cString: buffer)
    }
}

使用示例

现在你可以轻松拼接出你想要的完整系统版本格式了:

let mainVersion = UIDevice.current.systemVersion
let buildVersion = UIDevice.current.systemBuildVersion
print("iOS \(mainVersion) (\(buildVersion))")
// 输出示例:iOS 11.3 (15E216)

补充说明

  • sysctlbyname是BSD体系的底层系统函数,专门用来查询内核参数,kern.osversion对应的就是iOS系统的构建版本标识。
  • 这个方法在全iOS版本中都能稳定工作,不需要额外做版本适配。

内容的提问来源于stack exchange,提问作者Leanghorn

火山引擎 最新活动