I'm writing an app that has different functionality depending on the model of iPhone. Is there a way to distinguish between iPhone 5, and 5c 5s? I can not do a check on the display because it is identical. Thanks in advance.
Look on your deviceThe model number is on the upper side—the side with the display. On iPhone models that support eSIM only, you can find the model number in Settings > General > About.
Luckily, there is a way to find out which iPhone you have without turning it on or unlocking it by checking the Model number printed on it. The Model number starts with the letter A, as discussed in the previous chapter. First, examine your iPhone's back cover.
This is working on all version like iOS 6, iOS 7 and iOS 8 etc...
And updated for iPhone 6 & iPhone 6 Plus
-(void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char *machine = malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding]; NSLog(@"iPhone Device%@",[self platformType:platform]); free(machine); } - (NSString *) platformType:(NSString *)platform { if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; if ([platform isEqualToString:@"iPhone3,3"]) return @"Verizon iPhone 4"; if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)"; if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)"; if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)"; if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)"; if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)"; if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)"; if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus"; if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s"; if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus"; if ([platform isEqualToString:@"iPhone8,4"]) return @"iPhone SE"; if ([platform isEqualToString:@"iPhone9,1"]) return @"iPhone 7"; if ([platform isEqualToString:@"iPhone9,2"]) return @"iPhone 7 Plus"; if ([platform isEqualToString:@"iPhone9,3"]) return @"iPhone 7"; if ([platform isEqualToString:@"iPhone9,4"]) return @"iPhone 7 Plus"; if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G"; if ([platform isEqualToString:@"iPad1,1"]) return @"iPad"; if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)"; if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)"; if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)"; if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)"; if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)"; if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)"; if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (GSM)"; if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)"; if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)"; if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)"; if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)"; if ([platform isEqualToString:@"iPad4,3"]) return @"iPad Air"; if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini 2G (WiFi)"; if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini 2G (Cellular)"; if ([platform isEqualToString:@"iPad4,6"]) return @"iPad Mini 2G"; if ([platform isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (WiFi)"; if ([platform isEqualToString:@"iPad4,8"]) return @"iPad Mini 3 (Cellular)"; if ([platform isEqualToString:@"iPad4,9"]) return @"iPad Mini 3 (China)"; if ([platform isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)"; if ([platform isEqualToString:@"iPad5,4"]) return @"iPad Air 2 (Cellular)"; if ([platform isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G"; if ([platform isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3"; if ([platform isEqualToString:@"AppleTV3,2"]) return @"Apple TV 3 (2013)"; if ([platform isEqualToString:@"i386"]) return @"Simulator"; if ([platform isEqualToString:@"x86_64"]) return @"Simulator"; return platform; }
this code is also AppStore safe.
override func viewDidLoad() { super.viewDidLoad() var sysInfo = utsname() uname(&sysInfo) let machine = Mirror(reflecting: sysInfo.machine) let identifier = machine.children.reduce("") { identifier, element in guard let value = element.value as? Int8, value != 0 else { return identifier } return identifier + String(UnicodeScalar(UInt8(value))) } NSLog("Device Type ----> %@", self.platformType(platform: identifier as NSString)); print(self.platformType(platform: identifier as NSString)) } func platformType(platform : NSString) -> NSString{ if platform.isEqual(to: "iPhone1,1") { return "iPhone 1G" } else if platform.isEqual(to: "iPhone1,2"){ return "iPhone 3G" } else if platform.isEqual(to: "iPhone2,1"){ return "iPhone 3GS" } else if platform.isEqual(to: "iPhone3,1"){ return "iPhone 4" } else if platform.isEqual(to: "iPhone3,3"){ return "Verizon iPhone 4" } else if platform.isEqual(to: "iPhone4,1"){ return "iPhone 4S" } else if platform.isEqual(to: "iPhone5,1"){ return "iPhone 5 (GSM)" } else if platform.isEqual(to: "iPhone5,2"){ return "iPhone 5 (GSM+CDMA)" } else if platform.isEqual(to: "iPhone5,3"){ return "iPhone 5c (GSM)" } else if platform.isEqual(to: "iPhone5,4"){ return "iPhone 5c (GSM+CDMA)" } else if platform.isEqual(to: "iPhone6,1"){ return "iPhone 5s (GSM)" } else if platform.isEqual(to: "iPhone6,2"){ return "iPhone 5s (GSM+CDMA)" } else if platform.isEqual(to: "iPhone7,2"){ return "iPhone 6" } else if platform.isEqual(to: "iPhone7,1"){ return "iPhone 6 Plus" } else if platform.isEqual(to: "iPhone8,1"){ return "iPhone 6s" } else if platform.isEqual(to: "iPhone8,2"){ return "iPhone 6s Plus" } else if platform.isEqual(to: "iPhone8,4"){ return "iPhone SE" } else if platform.isEqual(to: "iPhone9,1"){ return "iPhone 7" } else if platform.isEqual(to: "iPhone9,2"){ return "iPhone 7 Plus" } else if platform.isEqual(to: "iPhone9,3"){ return "iPhone 7" } else if platform.isEqual(to: "iPhone9,4"){ return "iPhone 7 Plus" } else if platform.isEqual(to: "iPod1,1"){ return "iPod Touch 1G" } else if platform.isEqual(to: "iPod2,1"){ return "iPod Touch 2G" } else if platform.isEqual(to: "iPod3,1"){ return "iPod Touch 3G" } else if platform.isEqual(to: "iPod4,1"){ return "iPod Touch 4G" } else if platform.isEqual(to: "iPod5,1"){ return "iPod Touch 5G" } else if platform.isEqual(to: "iPad1,1"){ return "iPad" } else if platform.isEqual(to: "iPad2,1"){ return "iPad 2 (WiFi)" } else if platform.isEqual(to: "iPad2,2"){ return "iPad 2 (GSM)" } else if platform.isEqual(to: "iPad2,3"){ return "iPad 2 (CDMA)" } else if platform.isEqual(to: "iPad2,4"){ return "iPad 2 (WiFi)" } else if platform.isEqual(to: "iPad2,5"){ return "iPad Mini (WiFi)" } else if platform.isEqual(to: "iPad2,6"){ return "iPad Mini (GSM)" } else if platform.isEqual(to: "iPad2,7"){ return "iPad Mini (GSM+CDMA)" } else if platform.isEqual(to: "iPad3,1"){ return "iPad 3 (WiFi)" } else if platform.isEqual(to: "iPad3,2"){ return "iPad 3 (GSM+CDMA)" } else if platform.isEqual(to: "iPad3,3"){ return "iPad 3 (GSM)" } else if platform.isEqual(to: "iPad3,4"){ return "iPad 4 (WiFi)" } else if platform.isEqual(to: "iPad3,5"){ return "iPad 4 (GSM)" } else if platform.isEqual(to: "iPad3,6"){ return "iPad 4 (GSM+CDMA)" } else if platform.isEqual(to: "iPad4,1"){ return "iPad Air (WiFi)" } else if platform.isEqual(to: "iPad4,2"){ return "iPad Air (Cellular)" } else if platform.isEqual(to: "iPad4,3"){ return "iPad Air" } else if platform.isEqual(to: "iPad4,4"){ return "iPad Mini 2G (WiFi)" } else if platform.isEqual(to: "iPad4,5"){ return "iPad Mini 2G (Cellular)" } else if platform.isEqual(to: "iPad4,6"){ return "iPad Mini 2G"; } else if platform.isEqual(to: "iPad4,7"){ return "iPad Mini 3 (WiFi)" } else if platform.isEqual(to: "iPad4,8"){ return "iPad Mini 3 (Cellular)" } else if platform.isEqual(to: "iPad4,9"){ return "iPad Mini 3 (China)" } else if platform.isEqual(to: "iPad5,3"){ return "iPad Air 2 (WiFi)" } else if platform.isEqual(to: "iPad5,4"){ return "iPad Air 2 (Cellular)" } else if platform.isEqual(to: "AppleTV2,1"){ return "Apple TV 2G" } else if platform.isEqual(to: "AppleTV3,1"){ return "Apple TV 3" } else if platform.isEqual(to: "AppleTV3,2"){ return "Apple TV 3 (2013)" } else if platform.isEqual(to: "i386"){ return "Simulator" } else if platform.isEqual(to: "x86_64"){ return "Simulator" } return platform }
Use this to get the device-model-identifier, like iPhone6,2 or iPhone 3,1. Then you can do an if statement and check, if the identifier is equal to a prefix and then you can assign the right name to a NSString.
Here is the code:
#import <sys/utsname.h> NSString *deviceType; struct utsname systemInfo; uname(&systemInfo); deviceType = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With