Skip to content

Instantly share code, notes, and snippets.

@hboon
Last active October 19, 2015 17:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hboon/e22943f155cc628c782d to your computer and use it in GitHub Desktop.
Save hboon/e22943f155cc628c782d to your computer and use it in GitHub Desktop.
Check iOS hardware model
//Courtesy of https://github.com/InderKumarRathore/DeviceUtil/blob/master/DeviceUtil.m
- (NSString*)moHardwareDescription {
NSString *hardware = [self moHardwareString];
if ([hardware isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
if ([hardware isEqualToString:@"iPhone1,2"]) return @"iPhone 3G";
if ([hardware isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS";
if ([hardware isEqualToString:@"iPhone3,1"]) return @"iPhone 4";
if ([hardware isEqualToString:@"iPhone3,2"]) return @"iPhone 4";
if ([hardware isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
if ([hardware isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([hardware isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([hardware isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([hardware isEqualToString:@"iPhone5,3"]) return @"iPhone 5C";
if ([hardware isEqualToString:@"iPhone5,4"]) return @"iPhone 5C";
if ([hardware isEqualToString:@"iPhone6,1"]) return @"iPhone 5S";
if ([hardware isEqualToString:@"iPhone6,2"]) return @"iPhone 5S";
if ([hardware isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([hardware isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([hardware isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([hardware isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([hardware isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
if ([hardware isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
if ([hardware isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
if ([hardware isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
if ([hardware isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";
//7,1 for 6th generation is not a typo
if ([hardware isEqualToString:@"iPod7,1"]) return @"iPod Touch (6 Gen)";
if ([hardware isEqualToString:@"iPad1,1"]) return @"iPad";
if ([hardware isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([hardware isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([hardware isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([hardware isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([hardware isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([hardware isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([hardware isEqualToString:@"iPad2,6"]) return @"iPad Mini";
if ([hardware isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)";
if ([hardware isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)";
if ([hardware isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)";
if ([hardware isEqualToString:@"iPad3,3"]) return @"iPad 3";
if ([hardware isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([hardware isEqualToString:@"iPad3,5"]) return @"iPad 4";
if ([hardware isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)";
if ([hardware isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)";
if ([hardware isEqualToString:@"iPad4,2"]) return @"iPad Air";
if ([hardware isEqualToString:@"iPad4,4"]) return @"iPad Mini Retina (WiFi)";
if ([hardware isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina";
if ([hardware isEqualToString:@"iPad4,6"]) return @"iPad Mini Retina (CN)";
if ([hardware isEqualToString:@"iPad4,7"]) return @"iPad Mini 3 (WiFi)";
if ([hardware isEqualToString:@"iPad4,8"]) return @"iPad Mini 3";
if ([hardware isEqualToString:@"iPad5,1"]) return @"iPad Mini 4 (WiFi)";
if ([hardware isEqualToString:@"iPad5,2"]) return @"iPad Mini 4";
if ([hardware isEqualToString:@"iPad5,3"]) return @"iPad Air 2 (WiFi)";
if ([hardware isEqualToString:@"iPad5,4"]) return @"iPad Air 2";
if ([hardware isEqualToString:@"iPad6,8"]) return @"iPad Pro";
if ([hardware isEqualToString:@"i386"]) return @"Simulator";
if ([hardware isEqualToString:@"x86_64"]) return @"Simulator";
if ([hardware isEqualToString:@"AppleTV2,1"]) return @"Apple TV 2G";
if ([hardware isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([hardware isEqualToString:@"AppleTV3,1"]) return @"Apple TV 3";
if ([hardware isEqualToString:@"AppleTV5,3"]) return @"Apple TV 4";
if ([hardware hasPrefix:@"iPhone"]) return [NSString stringWithFormat:@"Unknown iPhone: %@", hardware];
if ([hardware hasPrefix:@"iPad"]) return [NSString stringWithFormat:@"Unknown iPad: %@", hardware];
if ([hardware hasPrefix:@"iPod"]) return [NSString stringWithFormat:@"Unknown iPod: %@", hardware];
if ([hardware hasPrefix:@"AppleTV"]) return [NSString stringWithFormat:@"Unknown Apple TV: %@", hardware];
return [NSString stringWithFormat:@"Unknown device: %@", hardware];
}
//Courtesy of https://github.com/InderKumarRathore/UIDevice-Hardware/blob/master/UIDevice%2BHardware.m
//https://www.theiphonewiki.com/wiki/Models
- (NSString*)moHardwareString {
size_t size = 100;
char *hw_machine = malloc(size);
int name[] = {CTL_HW,HW_MACHINE};
sysctl(name, 2, hw_machine, &size, NULL, 0);
NSString *hardware = [NSString stringWithUTF8String:hw_machine];
free(hw_machine);
return hardware;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment