Last active
November 9, 2017 11:29
-
-
Save acalism/70e8e6d5c00a5cfc409c072747cc37ef to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // 一些设备通用消息 // | |
| struct DeviceInfo { | |
| //获取设备名称 例如:elan的手机 | |
| static let deviceName = UIDevice.current.name | |
| //获取系统版本 例如:10.3 | |
| static let sysVersion = UIDevice.current.systemVersion | |
| //获取设备的型号 例如:iPhone 7 Plus | |
| static let deviceModel = UIDevice.current.modelName | |
| /// 例如:iPhone9,2 | |
| static let model: String = { | |
| var size = 0 | |
| sysctlbyname("hw.machine", nil, &size, nil, 0) | |
| var machine = [CChar](repeating: 0, count: Int(size)) | |
| sysctlbyname("hw.machine", &machine, &size, nil, 0) | |
| return String(cString: machine) | |
| }() | |
| /// 另一种获取model的方法(结果同上) | |
| static let anotherModel: 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))) | |
| } | |
| return identifier | |
| } | |
| /// 判断是否在模拟器上运行 | |
| static let isSimulator: Bool = { | |
| #if arch(i386) || arch(x86_64) | |
| return true | |
| #else | |
| return false | |
| #endif | |
| }() | |
| } | |
| extension UIDevice { | |
| var modelName: String { | |
| // 数据来源:https://www.theiphonewiki.com/wiki/Models | |
| switch DeviceInfo.anotherModel { | |
| case "iPod5,1": return "iPod Touch 5" | |
| case "iPod7,1": return "iPod Touch 6" | |
| case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4" | |
| case "iPhone4,1": return "iPhone 4s" | |
| case "iPhone5,1", "iPhone5,2": return "iPhone 5" | |
| case "iPhone5,3", "iPhone5,4": return "iPhone 5c" | |
| case "iPhone6,1", "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", "iPhone9,3": return "iPhone 7" | |
| case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus" | |
| case "iPhone10,1", "iPhone10,4": return "iPhone 8" | |
| case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus" | |
| case "iPhone10,3", "iPhone10,6": return "iPhone X" | |
| case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4": return "iPad 2" | |
| case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad Mini" | |
| case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad 3" | |
| case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad 4" | |
| case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air" | |
| case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad Mini 2" | |
| case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad Mini 3" | |
| case "iPad5,1", "iPad5,2": return "iPad Mini 4" | |
| case "iPad5,3", "iPad5,4": return "iPad Air 2" | |
| case "iPad6,3", "iPad6,4": return "iPad Pro (9.7-inch)" | |
| case "iPad6,7", "iPad6,8": return "iPad Pro (12.9-inch)" | |
| case "iPad6,11", "iPad6,12": return "iPad 5" | |
| case "iPad7,1", "iPad7,2": return "iPad Pro 2 (12.9-inch)" | |
| case "iPad7,3", "iPad7,4": return "iPad Pro (10.5-inch)" | |
| case "AppleTV2,1": return "Apple TV 2" | |
| case "AppleTV3,1", "AppleTV3,2": return "Apple TV 3" | |
| case "AppleTV5,3": return "Apple TV 4" | |
| case "AppleTV6,2": return "Apple TV 4K" | |
| case "Watch1,1": return "Apple Watch 1 (38mm)" | |
| case "Watch1,2": return "Apple Watch 1 (42mm)" | |
| case "Watch2,6": return "Apple Watch Series 1 (38mm)" | |
| case "Watch2,7": return "Apple Watch Series 1 (42mm)" | |
| case "Watch2,3": return "Apple Watch Series 2 (38mm)" | |
| case "Watch2,4": return "Apple Watch Series 2 (42mm)" | |
| case "Watch3,1", "Watch3,3": return "Apple Watch Series 3 (38mm)" | |
| case "Watch3,2", "Watch3,4": return "Apple Watch Series 3 (42mm)" | |
| case "i386", "x86_64": return "Simulator" | |
| default: return identifier | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment