链接: http://stackoverflow.com/questions/11197509/ios-how-to-get-device-make-and-model
http://stackoverflow.com/questions/26028918/ios-how-to-determine-iphone-model-in-swift
这种是在较高层次获取设备类型,返回的是 iPhone , iPod , iPad 。适合要求不高的。
UIDevice.currentDevice().model
以下可以获取具体型号信息:
Swift Code:
// // UIDeviceExtension.swift // StopSmokingPrograms // // Created by Fran on 15/12/29. // Copyright © 2015年 kimree. All rights reserved. // import Foundation public enum DeviceModel : String { case Simulator = "Simulator/Sandbox", iPod1 = "iPod 1", iPod2 = "iPod 2", iPod3 = "iPod 3", iPod4 = "iPod 4", iPod5 = "iPod 5", iPad2 = "iPad 2", iPad3 = "iPad 3", iPad4 = "iPad 4", iPhone4 = "iPhone 4", iPhone4S = "iPhone 4S", iPhone5 = "iPhone 5", iPhone5S = "iPhone 5S", iPhone5C = "iPhone 5C", iPadMini1 = "iPad Mini 1", iPadMini2 = "iPad Mini 2", iPadMini3 = "iPad Mini 3", iPadAir1 = "iPad Air 1", iPadAir2 = "iPad Air 2", iPhone6 = "iPhone 6", iPhone6plus = "iPhone 6 Plus", iPhone6S = "iPhone 6S", iPhone6Splus = "iPhone 6S Plus", Unrecognized = "?unrecognized?" } extension UIDevice{ public var deviceModel: DeviceModel{ var systemInfo = utsname() uname(&systemInfo) let modelCode = withUnsafeMutablePointer(&systemInfo.machine) { ptr in String.fromCString(UnsafePointer<CChar>(ptr)) } var modelMap : [ String : DeviceModel ] = [ "i386" : .Simulator, "x86_64" : .Simulator, "iPod1,1" : .iPod1, "iPod2,1" : .iPod2, "iPod3,1" : .iPod3, "iPod4,1" : .iPod4, "iPod5,1" : .iPod5, "iPad2,1" : .iPad2, "iPad2,2" : .iPad2, "iPad2,3" : .iPad2, "iPad2,4" : .iPad2, "iPad2,5" : .iPadMini1, "iPad2,6" : .iPadMini1, "iPad2,7" : .iPadMini1, "iPhone3,1" : .iPhone4, "iPhone3,2" : .iPhone4, "iPhone3,3" : .iPhone4, "iPhone4,1" : .iPhone4S, "iPhone5,1" : .iPhone5, "iPhone5,2" : .iPhone5, "iPhone5,3" : .iPhone5C, "iPhone5,4" : .iPhone5C, "iPad3,1" : .iPad3, "iPad3,2" : .iPad3, "iPad3,3" : .iPad3, "iPad3,4" : .iPad4, "iPad3,5" : .iPad4, "iPad3,6" : .iPad4, "iPhone6,1" : .iPhone5S, "iPhone6,2" : .iPhone5S, "iPad4,1" : .iPadAir1, "iPad4,2" : .iPadAir2, "iPad4,4" : .iPadMini2, "iPad4,5" : .iPadMini2, "iPad4,6" : .iPadMini2, "iPad4,7" : .iPadMini3, "iPad4,8" : .iPadMini3, "iPad4,9" : .iPadMini3, "iPhone7,1" : .iPhone6plus, "iPhone7,2" : .iPhone6, "iPhone8,1" : .iPhone6S, "iPhone8,2" : .iPhone6Splus ] if let model = modelMap[String.fromCString(modelCode!)!] { return model } return DeviceModel.Unrecognized } }
Objective-C Code:
UIDevice+DeviceModel.h
// // UIDevice+DeviceModel.h // TestDemo // // Created by Fran on 15/12/29. // Copyright © 2015年 Fran. All rights reserved. // #import <UIKit/UIKit.h> extern NSString *const Device_Simulator; extern NSString *const Device_iPod1; extern NSString *const Device_iPod2; extern NSString *const Device_iPod3; extern NSString *const Device_iPod4; extern NSString *const Device_iPod5; extern NSString *const Device_iPad2; extern NSString *const Device_iPad3; extern NSString *const Device_iPad4; extern NSString *const Device_iPhone4; extern NSString *const Device_iPhone4S; extern NSString *const Device_iPhone5; extern NSString *const Device_iPhone5S; extern NSString *const Device_iPhone5C; extern NSString *const Device_iPadMini1; extern NSString *const Device_iPadMini2; extern NSString *const Device_iPadMini3; extern NSString *const Device_iPadAir1; extern NSString *const Device_iPadAir2; extern NSString *const Device_iPhone6; extern NSString *const Device_iPhone6plus; extern NSString *const Device_iPhone6S; extern NSString *const Device_iPhone6Splus; extern NSString *const Device_Unrecognized; @interface UIDevice (DeviceModel) -(NSString *) deviceModel; @end
UIDevice+DeviceModel.m
// // UIDevice+DeviceModel.m // TestDemo // // Created by Fran on 15/12/29. // Copyright © 2015年 Fran. All rights reserved. // #import "UIDevice+DeviceModel.h" #import <sys/utsname.h> NSString *const Device_Simulator = @"Simulator"; NSString *const Device_iPod1 = @"iPod1"; NSString *const Device_iPod2 = @"iPod2"; NSString *const Device_iPod3 = @"iPod3"; NSString *const Device_iPod4 = @"iPod4"; NSString *const Device_iPod5 = @"iPod5"; NSString *const Device_iPad2 = @"iPad2"; NSString *const Device_iPad3 = @"iPad3"; NSString *const Device_iPad4 = @"iPad4"; NSString *const Device_iPhone4 = @"iPhone 4"; NSString *const Device_iPhone4S = @"iPhone 4S"; NSString *const Device_iPhone5 = @"iPhone 5"; NSString *const Device_iPhone5S = @"iPhone 5S"; NSString *const Device_iPhone5C = @"iPhone 5C"; NSString *const Device_iPadMini1 = @"iPad Mini 1"; NSString *const Device_iPadMini2 = @"iPad Mini 2"; NSString *const Device_iPadMini3 = @"iPad Mini 3"; NSString *const Device_iPadAir1 = @"iPad Air 1"; NSString *const Device_iPadAir2 = @"iPad Mini 3"; NSString *const Device_iPhone6 = @"iPhone 6"; NSString *const Device_iPhone6plus = @"iPhone 6 Plus"; NSString *const Device_iPhone6S = @"iPhone 6S"; NSString *const Device_iPhone6Splus = @"iPhone 6S Plus"; NSString *const Device_Unrecognized = @"?unrecognized?"; @implementation UIDevice (DeviceModel) - (NSString *)deviceModel{ struct utsname systemInfo; uname(&systemInfo); NSString* code = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; static NSDictionary* deviceNamesByCode = nil; if (!deviceNamesByCode) { deviceNamesByCode = @{ @"i386" : Device_Simulator, @"x86_64" : Device_Simulator, @"iPod1,1" : Device_iPod1, @"iPod2,1" : Device_iPod2, @"iPod3,1" : Device_iPod3, @"iPod4,1" : Device_iPod4, @"iPod5,1" : Device_iPod5, @"iPad2,1" : Device_iPad2, @"iPad2,2" : Device_iPad2, @"iPad2,3" : Device_iPad2, @"iPad2,4" : Device_iPad2, @"iPad2,5" : Device_iPadMini1, @"iPad2,6" : Device_iPadMini1, @"iPad2,7" : Device_iPadMini1, @"iPhone3,1" : Device_iPhone4, @"iPhone3,2" : Device_iPhone4, @"iPhone3,3" : Device_iPhone4, @"iPhone4,1" : Device_iPhone4S, @"iPhone5,1" : Device_iPhone5, @"iPhone5,2" : Device_iPhone5, @"iPhone5,3" : Device_iPhone5C, @"iPhone5,4" : Device_iPhone5C, @"iPad3,1" : Device_iPad3, @"iPad3,2" : Device_iPad3, @"iPad3,3" : Device_iPad3, @"iPad3,4" : Device_iPad4, @"iPad3,5" : Device_iPad4, @"iPad3,6" : Device_iPad4, @"iPhone6,1" : Device_iPhone5S, @"iPhone6,2" : Device_iPhone5S, @"iPad4,1" : Device_iPadAir1, @"iPad4,2" : Device_iPadAir2, @"iPad4,4" : Device_iPadMini2, @"iPad4,5" : Device_iPadMini2, @"iPad4,6" : Device_iPadMini2, @"iPad4,7" : Device_iPadMini3, @"iPad4,8" : Device_iPadMini3, @"iPad4,9" : Device_iPadMini3, @"iPhone7,1" : Device_iPhone6plus, @"iPhone7,2" : Device_iPhone6, @"iPhone8,1" : Device_iPhone6S, @"iPhone8,2" : Device_iPhone6Splus }; } NSString* deviceName = [deviceNamesByCode objectForKey:code]; if(deviceName){ return deviceName; } return Device_Unrecognized; } @end