我已经搜索了一段时间,但发现无法从UIDevice.current.model
获得,因为它仅返回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 ?? ""
顺便说一下,我不确定这是使用公共API还是私有API,对我来说似乎是私有API。
问题 这段代码使用任何私有api吗?
答案 0 :(得分:3)
您的代码未使用任何私有API。
uname
函数返回一个POSIX结构,该结构包含名称和有关当前内核的信息。 machine
变量包含一个硬件标识符。您需要将该标识符转换为更友好的名称,仅此而已。
您可以在终端中使用man uname
以获得有关该功能的更多信息。