Last active
October 19, 2015 17:34
-
-
Save hboon/e22943f155cc628c782d to your computer and use it in GitHub Desktop.
Check iOS hardware model
This file contains 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
//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