如何在 swift 中获取 phone 的型号名称

how to get phone's model name in swift

我已经搜索了一段时间,我发现这不能从 UIDevice.current.model 获得,因为它 returns 只是 iPhone。有几个答案指向这段代码:

if let simulatorModelIdentifier = ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] { 
    return simulatorModelIdentifier 
}

var sysinfo = utsname()
uname(&sysinfo) // ignore return value
let deviceModel = String(bytes: Data(bytes: &sysinfo.machine, count: Int(_SYS_NAMELEN)), encoding: .ascii)?.trimmingCharacters(in: .controlCharacters)

return deviceModel ?? ""

顺便说一句,我不确定这是使用 public 还是私有 api,对我来说似乎是私有 api。

问题 此代码是否使用任何私有 api?

您的代码未使用任何私有 API。

uname 函数 returns 一个 POSIX 结构,包含有关当前内核的名称和信息。 machine 变量包含一个硬件标识符。您需要将此标识符转换为更友好的名称,仅此而已。

您可以在终端中使用 man uname 获取有关该功能的更多信息。