参考:
https://en.wikipedia.org/wiki/List_of_iPhone_models
https://en.wikipedia.org/wiki/List_of_iPad_models
持续更新 ……
iPhone Model |
Hardware strings |
iPhone 1 |
iPhone1,1 |
iPhone 3G |
iPhone1,2 |
iPhone 3GS |
iPhone2,1 |
iPhone 4 |
iPhone3,1 iPhone3,2 iPhone3,3 |
iPhone 4S |
iPhone4,1 |
iPhone 5 |
iPhone5,1 iPhone5,2 |
iPhone 5C |
iPhone5,3 iPhone5,4 |
iPhone 5S |
iPhone6,1 iPhone6,2 |
iPhone 6 |
iPhone7,2 |
iPhone 6 Plus |
iPhone7,1 |
iPhone 6S |
iPhone8,1 |
iPhone 6S Plus |
iPhone8,2 |
iPhone SE |
iPhone8,4 |
iPhone SE2 |
iPhone12,8 |
iPhone 7 |
iPhone9,1 iPhone9,3 |
iPhone 7 Plus |
iPhone9,2 iPhone9,4 |
iPhone 8 |
iPhone10,1 iPhone10,4 |
iPhone 8 Plus |
iPhone10,2 iPhone10,5 |
iPhone X |
iPhone10,3 iPhone10,6 |
iPhone XS |
iPhone11,2 |
iPhone XS Max |
iPhone11,4 iPhone11,6 |
iPhone XR |
iPhone11,8 |
iPhone 11 |
iPhone12,1 |
iPhone 11 Pro |
iPhone12,3 |
iPhone 11 Pro Max |
iPhone12,5 |
iPhone 12 Mini |
iPhone13,1 |
iPhone 12 |
iPhone13,2 |
iPhone 12 Pro |
iPhone13,3 |
iPhone 12 Pro Max |
iPhone13,4 |
iPhone 13 Mini |
iPhone14,4 |
iPhone 13 |
iPhone14,5 |
iPhone 13 Pro |
iPhone14,2 |
iPhone 13 Pro Max |
iPhone14,3 |
iPhone SE3 |
iPhone14,6 |
iPhone 14 |
iPhone14,7 |
iPhone 14 Plus |
iPhone14,8 |
iPhone 14 Pro |
iPhone15,2 |
iPhone 14 Pro Max |
iPhone15,3 |
iPad Model |
Hardware strings |
iPad 1 |
iPad1,1 |
iPad 2 |
iPad2,1 iPad2,2 iPad2,3 iPad2,4 |
iPad 3rd |
iPad3,1 iPad3,2 iPad3,3 |
iPad 4th |
iPad3,4 iPad3,5 iPad3,6 |
iPad 5th |
iPad6,11 iPad6,12 |
iPad 6th |
iPad7,5 iPad7,6 |
iPad 7th |
iPad7,11 iPad7,12 |
iPad 8th |
iPad11,6 iPad11,7 |
iPad 9th |
iPad12,1 iPad12,2 |
iPad Mini 1 |
iPad2,5 iPad2,6 iPad2,7 |
iPad Mini 2 |
iPad4,4 iPad4,5 iPad4,6 |
iPad Mini 3 |
iPad4,7 iPad4,8 iPad4,9 |
iPad Mini 4 |
iPad5,1 iPad5,2 |
iPad Mini 5 |
iPad11,1 iPad11,2 |
iPad Mini 6 |
iPad14,1 iPad14,2 |
iPad Air 1 |
iPad4,1 iPad4,2 iPad4,3 |
iPad Air 2 |
iPad5,3 iPad5,4 |
iPad Air 3rd |
iPad11,3 iPad11,4 |
iPad Air 4th |
iPad13,1 iPad13,2 |
iPad Pro 9.7-inch |
iPad6,3 iPad6,4 |
iPad Pro 10.5-inch |
iPad7,3 iPad7,4 |
iPad Pro 12.9-inch 1st |
iPad6,7 iPad6,8 |
iPad Pro 12.9-inch 2nd |
iPad7,1 iPad7,2 |
iPad Pro 12.9-inch 3rd |
iPad8,5 iPad8,6 iPad8,7 iPad8,8 |
iPad Pro 12.9-inch 4rd |
iPad8,11 iPad8,12 |
iPad Pro 12.9-inch 5rd |
iPad13,8 iPad13,9 iPad13,10 iPad13,11 |
iPad Pro 11-inch 1st |
iPad8,1 iPad8,2 iPad8,3 iPad8,4 |
iPad Pro 11-inch 2nd |
iPad 8,9 iPad 8,10 |
iPad Pro 11-inch 3rd |
iPad13,4 iPad13,5 iPad13,6 iPad13,7 |
func deviceModel() -> 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 { return identifier }
return identifier + String(UnicodeScalar(UInt8(value)))
}
print("identifier: \(identifier)")
switch identifier {
case "i386", "x86_64": return "iPhone Simulator"
case "iPhone1,1": return "iPhone"
case "iPhone1,2": return "iPhone 3G"
case "iPhone2,1": return "iPhone 3GS"
case "iPhone3,1": return "iPhone 4"
case "iPhone3,2": return "iPhone 4"
case "iPhone3,3": return "iPhone 4"
case "iPhone4,1": return "iPhone 4S"
case "iPhone5,1": return "iPhone 5"
case "iPhone5,2": return "iPhone 5"
case "iPhone5,3": return "iPhone 5C"
case "iPhone5,4": return "iPhone 5C"
case "iPhone6,1": return "iPhone 5S"
case "iPhone6,2": return "iPhone 5S"
case "iPhone7,2": return "iPhone 6"
case "iPhone7,1": return "iPhone 6 Plus"
case "iPhone8,1": return "iPhone 6S"
case "iPhone8,2": return "iPhone 6S Plus"
case "iPhone8,4": return "iPhone SE"
case "iPhone9,1": return "iPhone 7"
case "iPhone9,3": return "iPhone 7"
case "iPhone9,2": return "iPhone 7 Plus"
case "iPhone9,4": return "iPhone 7 Plus"
case "iPhone10,1": return "iPhone 8"
case "iPhone10,4": return "iPhone 8"
case "iPhone10,2": return "iPhone 8 Plus"
case "iPhone10,5": return "iPhone 8 Plus"
case "iPhone10,3": return "iPhone X"
case "iPhone10,6": return "iPhone X"
case "iPhone11,2": return "iPhone XS"
case "iPhone11,4": return "iPhone XS Max"
case "iPhone11,6": return "iPhone XS Max"
case "iPhone11,8": return "iPhone XR"
case "iPhone12,1": return "iPhone 11"
case "iPhone12,3": return "iPhone 11 Pro"
case "iPhone12,5": return "iPhone 11 Pro Max"
case "iPhone13,3": return "iPhone 12 Pro"
case "iPhone13,4": return "iPhone 12 Pro Max"
case "iPhone12,8": return "iPhone SE 2nd"
case "iPhone13,1": return "iPhone 12 Mini"
case "iPhone13,2": return "iPhone 12"
case "iPhone14,4": return "iPhone 13 Mini"
case "iPhone14,5": return "iPhone 13"
case "iPhone14,2": return "iPhone 13 Pro"
case "iPhone14,3": return "iPhone 13 Pro Max"
case "iPhone14,6": return "iPhone SE3"
case "iPhone14,7": return "iPhone 14"
case "iPhone14,8": return "iPhone 14 Plus"
case "iPhone15,2": return "iPhone 14 Pro"
case "iPhone15,3": return "iPhone 14 Pro Max"
case "iPad1,1": return "iPad 1"
case "iPad2,1": return "iPad 2"
case "iPad2,2": return "iPad 2"
case "iPad2,3": return "iPad 2"
case "iPad2,4": return "iPad 2"
case "iPad3,1": return "iPad 3rd"
case "iPad3,2": return "iPad 3rd"
case "iPad3,3": return "iPad 3rd"
case "iPad3,4": return "iPad 4th"
case "iPad3,5": return "iPad 4th"
case "iPad3,6": return "iPad 4th"
case "iPad6,11": return "iPad 5th"
case "iPad6,12": return "iPad 5th"
case "iPad7,5": return "iPad 6th"
case "iPad7,6": return "iPad 6th"
case "iPad7,11": return "iPad 7th"
case "iPad7,12": return "iPad 7th"
case "iPad 11,6": return "iPad 8th"
case "iPad 11,7": return "iPad 8th"
case "iPad 12,1": return "iPad 9th"
case "iPad 12,2": return "iPad 9th"
case "iPad2,5": return "iPad Mini 1"
case "iPad2,6": return "iPad Mini 1"
case "iPad2,7": return "iPad Mini 1"
case "iPad4,4": return "iPad Mini 2"
case "iPad4,5": return "iPad Mini 2"
case "iPad4,6": return "iPad Mini 2"
case "iPad4,7": return "iPad Mini 3"
case "iPad4,8": return "iPad Mini 3"
case "iPad4,9": return "iPad Mini 3"
case "iPad5,1": return "iPad Mini 4"
case "iPad5,2": return "iPad Mini 4"
case "iPad11,1": return "iPad Mini 5"
case "iPad11,2": return "iPad Mini 5"
case "iPad14,1": return "iPad Mini 6"
case "iPad14,2": return "iPad Mini 6"
case "iPad4,1": return "iPad Air"
case "iPad4,2": return "iPad Air"
case "iPad4,3": return "iPad Air"
case "iPad5,3": return "iPad Air 2"
case "iPad5,4": return "iPad Air 2"
case "iPad11,3": return "iPad Air 3rd"
case "iPad11,4": return "iPad Air 3rd"
case "iPad13,1": return "iPad Air 4th"
case "iPad13,2": return "iPad Air 4th"
case "iPad6,3": return "iPad Pro 9.7-inch"
case "iPad6,4": return "iPad Pro 9.7-inch"
case "iPad7,3": return "iPad Pro 10.5-inch"
case "iPad7,4": return "iPad Pro 10.5-inch"
case "iPad6,7": return "iPad Pro 12.9-inch 1st"
case "iPad6,8": return "iPad Pro 12.9-inch 1st"
case "iPad7,1": return "iPad Pro 12.9-inch 2nd"
case "iPad7,2": return "iPad Pro 12.9-inch 2nd"
case "iPad8,5": return "iPad Pro 12.9-inch 3rd"
case "iPad8,6": return "iPad Pro 12.9-inch 3rd"
case "iPad8,7": return "iPad Pro 12.9-inch 3rd"
case "iPad8,8": return "iPad Pro 12.9-inch 3rd"
case "iPad8,11": return "iPad Pro 12.9-inch 4rd"
case "iPad8,12": return "iPad Pro 12.9-inch 4rd"
case "iPad13,8": return "iPad Pro 12.9-inch 5th"
case "iPad13,9": return "iPad Pro 12.9-inch 5th"
case "iPad13,10": return "iPad Pro 12.9-inch 5th"
case "iPad13,11": return "iPad Pro 12.9-inch 5th"
case "iPad8,1": return "iPad Pro 11-inch 1st"
case "iPad8,2": return "iPad Pro 11-inch 1st"
case "iPad8,3": return "iPad Pro 11-inch 1st"
case "iPad8,4": return "iPad Pro 11-inch 1st"
case "iPad 8,9": return "iPad Pro 11-inch 2nd"
case "iPad 8,10": return "iPad Pro 11-inch 2nd"
case "iPad13,4": return "iPad Pro 11-inch 3rd"
case "iPad13,5": return "iPad Pro 11-inch 3rd"
case "iPad13,6": return "iPad Pro 11-inch 3rd"
case "iPad13,7": return "iPad Pro 11-inch 3rd"
case "iPod1,1": return "iPod Touch 1st"
case "iPod2,1": return "iPod Touch 2nd"
case "iPod3,1": return "iPod Touch 3rd"
case "iPod4,1": return "iPod Touch 4th"
case "iPod5,1": return "iPod Touch 5th"
case "iPod7,1": return "iPod Touch 6th"
case "iPod9,1": return "iPod Touch 7th"
case "AppleTV2,1": return "Apple TV 2nd"
case "AppleTV3,1": return "Apple TV 3rd"
case "AppleTV3,2": return "Apple TV 3rd"
case "AppleTV5,3": return "Apple TV HD"
case "AppleTV6,2": return "Apple TV 4K 1st"
case "AppleTV11,1": return "Apple TV 4K 2nd"
default: return identifier
}
}