如何使用 Swift 确定设备类型(iPhone、iPod Touch)?
在开发 iOS 应用程序时,我们有时需要知道应用程序安装在哪个设备上,并根据使用的设备提供自定义功能。例如,我们希望在 iPhone X 上提供一些功能,但在 iPhone 7 上不提供。在本文中,我们将学习如何使用 iOS 应用程序查找正在使用的 iOS 设备。
让我们了解一些实现预期结果所需的概念,
utsname − 这是 iOS 的 Darwin 模块中的一个结构
uname − uname 是一个函数,它以 utsname 作为输入,并返回 Int32 作为输出。
镜像 − 任何类型实例的子结构和显示样式的表示。
在 iOS SDK 上查找正在使用的设备是一项简单的任务,如果我们只需要查找型号或名称,我们可以使用以下任何代码,它将返回一个字符串。
但是以上代码无法确定正在使用的确切设备,它只能告诉我们正在使用 iPhone。要获取正在使用的确切设备,我们需要执行一些步骤。
在 Swift 中,我们将使用上面提到的所有术语来获取设备编号作为输出。
func getDevice() -> String { var systemInfo = utsname() uname(&systemInfo) let machineMirror = Mirror(reflecting: systemInfo.machine) let identifier = machineMirror.children.reduce(“”) { identifier, element in guard let value = element.value as? Int8 , value != 0 else { identifier } identifier + String(UnicodeScalar(UInt8(value))) } return identifier }
此函数提供给我们模型代码,但不是确切的设备名称。我们将不得不将此“identifier”变量与多个值进行比较,以根据需求获取模型名称。
以下是在 iOS 12.0 版本的模拟器上运行 iPhone 7 Plus 时代码运行情况的示例
一些苹果设备的型号代码及其对应的名称如下:
iPod4,1 | iPod Touch 4G |
iPod5,1 | iPod Touch 5G |
iPod7,1 | iPod Touch 6G |
iPhone3,1 , iPhone3,2 , iPhone3,3 | iPhone 4 |
iPhone4, | iPhone 4s |
iPhone5,1 , iPhone5,2 | iPhone 5 |
iPhone5,3 , iPhone5,4 | iPhone 5c |
iPhone6,1 , iPhone6,2 | iPhone 5s |
iPhone7,2 | iPhone 6 |
iPhone7,1 | iPhone 6 Plus |
iPhone8,1 | iPhone 6s |
iPhone8,2 | iPhone 6s Plus |
iPhone8,4 | iPhone SE |
iPhone9,1 , iPhone9,3 | iPhone 7 |
iPhone9,2 , iPhone 9,4 | iPhone 7 Plus |
iPad2,1 , iPad2,2 , iPad2,3 , iPad2,4 | iPad 2 |
iPad3,1 , iPad3,2 , iPad3,3 | iPad 3 |
iPad3,4 , iPad3,5 , iPad3,6 | iPad 4 |
iPad4,1 , iPad4,2 , iPad4,3 | iPad Air |
iPad5,3 , iPad5,4 | iPad Air 2 |
iPad2,5 , iPad2,6 , iPad2,7 | iPad Mini |
iPad4,4 , iPad4,5 , iPad4,6 | iPad Mini 2 |
iPad4,7 , iPad4,8 , iPad4,9 | iPad Mini 3 |
iPad5,1 , iPad5,2 | iPad Mini 4 |
iPad6,3 , iPad6,4 | iPad Pro (9.7 英寸) |
iPad6,7 , iPad6,8 | iPad Pro (12.9 英寸) |
广告