如何在 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
获取有关该功能的更多信息。
我已经搜索了一段时间,我发现这不能从 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
获取有关该功能的更多信息。