// // Copyright 2011 boxedfolder.com. All rights reserved. // #import "UIDevice+DHHardware.h" #include @implementation UIDevice (HardwareModel) -(UIHardwareModel)hardwareModel { NSString *hwString = [self modelIdentifier]; if([hwString isEqualToString: @"i386"] || [hwString isEqualToString:@"x86_64"]) return UIHardwareModelSimulator; // iPod if([hwString isEqualToString: @"iPod1,1"]) return UIHardwareModeliPodTouch1G; if([hwString isEqualToString: @"iPod2,1"]) return UIHardwareModeliPodTouch2G; if([hwString isEqualToString: @"iPod3,1"]) return UIHardwareModeliPodTouch3G; if([hwString isEqualToString: @"iPod4,1"]) return UIHardwareModeliPodTouch4G; // iPad http://theiphonewiki.com/wiki/IPad if([hwString isEqualToString: @"iPad1,1"]) return UIHardwareModeliPad; if([hwString isEqualToString: @"iPad2,1"]) return UIHardwareModeliPad2Wifi; if([hwString isEqualToString: @"iPad2,2"]) return UIHardwareModeliPad2GSM; if([hwString isEqualToString: @"iPad2,3"]) return UIHardwareModeliPad2CDMA; if([hwString isEqualToString: @"iPad2,4"]) return UIHardwareModeliPad2RevA; if ([hwString isEqualToString:@"iPad2,5"]) return UIHardwareModeliPadMini1GWifi; if ([hwString isEqualToString:@"iPad2,6"]) return UIHardwareModeliPadMini1GGSM; if ([hwString isEqualToString:@"iPad2,7"]) return UIHardwareModeliPadMini1GGlobal; if([hwString isEqualToString: @"iPad3,1"]) return UIHardwareModeliPad3Wifi; if([hwString isEqualToString: @"iPad3,2"]) return UIHardwareModeliPad3GSM; if([hwString isEqualToString: @"iPad3,3"]) return UIHardwareModeliPad3CDMA; if ([hwString isEqualToString:@"iPad3,4"]) return UIHardwareModeliPad4Wifi; if ([hwString isEqualToString:@"iPad3,5"]) return UIHardwareModeliPad4GSM; if ([hwString isEqualToString:@"iPad3,6"]) return UIHardwareModeliPad4Global; if ([hwString isEqualToString:@"iPad4,1"]) return UIHardwareModeliPadAirWifi; if ([hwString isEqualToString:@"iPad4,2"]) return UIHardwareModeliPadAirCellular; if ([hwString isEqualToString:@"iPad5,1"]) return UIHardwareModeliPadMini4GWifi; if ([hwString isEqualToString:@"iPad5,2"]) return UIHardwareModeliPadMini4GCellular; if ([hwString isEqualToString:@"iPad5,3"]) return UIHardwareModeliPadAir2Wifi; if ([hwString isEqualToString:@"iPad5,4"]) return UIHardwareModeliPadAir2Cellular; if ([hwString isEqualToString:@"iPad6,3"]) return UIHardwareModeliPadPro9_7Inch1GWifi; if ([hwString isEqualToString:@"iPad6,4"]) return UIHardwareModeliPadPro9_7Inch1GCellular; if ([hwString isEqualToString:@"iPad6,7"]) return UIHardwareModeliPadPro12_9Inch1GWifi; if ([hwString isEqualToString:@"iPad6,8"]) return UIHardwareModeliPadPro12_9Inch1GCellular; // iPhone http://theiphonewiki.com/wiki/IPhone // if([hwString isEqualToString: @"iPhone1,1"]) // return UIHardwareModeliPhone1G; // if([hwString isEqualToString: @"iPhone1,2"]) // return UIHardwareModeliPhone3G; // if([hwString isEqualToString: @"iPhone2,1"]) // return UIHardwareModeliPhone3GS; if([hwString isEqualToString: @"iPhone3,1"]) return UIHardwareModeliPhone4GSM; if([hwString isEqualToString: @"iPhone3,2"]) return UIHardwareModeliPhone4GSMRevA; if ([hwString isEqualToString:@"iPhone3,3"]) return UIHardwareModeliPhone4CDMA; if([hwString isEqualToString: @"iPhone4,1"]) return UIHardwareModeliPhone4S; if([hwString isEqualToString: @"iPhone5,1"]) return UIHardwareModeliPhone5GSM; if([hwString isEqualToString: @"iPhone5,2"]) return UIHardwareModeliPhone5Global; if([hwString isEqualToString: @"iPhone5,3"]) return UIHardwareModeliPhone5cGSM; if([hwString isEqualToString: @"iPhone5,4"]) return UIHardwareModeliPhone5cGlobal; if([hwString isEqualToString: @"iPhone6,1"]) return UIHardwareModeliPhone5sGSM; if([hwString isEqualToString: @"iPhone6,2"]) return UIHardwareModeliPhone5sGlobal; if ([hwString isEqualToString:@"iPhone7,1"]) return UIHardwareModeliPhone6Plus; if ([hwString isEqualToString:@"iPhone7,2"]) return UIHardwareModeliPhone6; if ([hwString isEqualToString:@"iPhone8,1"]) return UIHardwareModeliPhone6s; if ([hwString isEqualToString:@"iPhone8,2"]) return UIHardwareModeliPhone6sPlus; if ([hwString isEqualToString:@"iPhone8,4"]) return UIHardwareModeliPhoneSE; if ([hwString isEqualToString:@"iPhone9,1"]) return UIHardwareModeliPhone7; if ([hwString isEqualToString:@"iPhone9,2"]) return UIHardwareModeliPhone7Plus; if ([hwString isEqualToString:@"iPhone9,3"]) return UIHardwareModeliPhone7; if ([hwString isEqualToString:@"iPhone9,4"]) return UIHardwareModeliPhone7Plus; return UIHardwareModelUNKnow; } - (UIHardwareFamily) deviceFamily { NSString *modelIdentifier = [self modelIdentifier]; if ([modelIdentifier hasPrefix:@"iPhone"]) return UIHardwareFamilyiPhone; if ([modelIdentifier hasPrefix:@"iPod"]) return UIHardwareFamilyiPod; if ([modelIdentifier hasPrefix:@"iPad"]) return UIHardwareFamilyiPad; if ([modelIdentifier hasPrefix:@"AppleTV"]) return UIHardwareFamilyAppleTV; return UIHardwareFamilyUnknown; } -(UIHardwareType)hardwareType { /* UIHardwareModeliPhone1G, UIHardwareModeliPhone3G, UIHardwareModeliPhone3GS, 不支持了 直接略过 */ UIHardwareModel model = [self hardwareModel]; if (model == UIHardwareModelUNKnow) { return UIHardwareTypeUnKnown; } else if (model == UIHardwareModelSimulator) { return UIHardwareTypeSimulator; } else if (model == UIHardwareModeliPhone4GSM || model == UIHardwareModeliPhone4GSMRevA || model == UIHardwareModeliPhone4CDMA) { return UIHardwareTypeiPhne4; } else if (model == UIHardwareModeliPhone4S) { return UIHardwareTypeiPhne4s; } else if (model == UIHardwareModeliPhone5GSM|| model == UIHardwareModeliPhone5Global) { return UIHardwareTypeiPhne5; } else if (model == UIHardwareModeliPhone5cGSM|| model == UIHardwareModeliPhone5cGlobal) { return UIHardwareTypeiPhne5c; } else if (model == UIHardwareModeliPhone5sGSM|| model == UIHardwareModeliPhone5sGlobal) { return UIHardwareTypeiPhne5c; } else if (model == UIHardwareModeliPhone6Plus) { return UIHardwareTypeiPhne6Plus; } else if (model == UIHardwareModeliPhone6) { return UIHardwareTypeiPhne6; } else if (model == UIHardwareModeliPhone6s) { return UIHardwareTypeiPhne6s; } else if (model == UIHardwareModeliPhone6sPlus) { return UIHardwareTypeiPhne6sPlus; } else if (model == UIHardwareModeliPhoneSE) { return UIHardwareTypeiPhneSE; } else if (model == UIHardwareModeliPhone7) { return UIHardwareTypeiPhne7; } else if (model == UIHardwareModeliPhone7Plus) { return UIHardwareTypeiPhne7Plus; } return UIHardwareTypeUnKnown; } #pragma mark - - (NSString *)getSysInfoByName:(char *)typeSpecifier { size_t size; sysctlbyname(typeSpecifier, NULL, &size, NULL, 0); char *answer = malloc(size); sysctlbyname(typeSpecifier, answer, &size, NULL, 0); NSString *results = [NSString stringWithCString:answer encoding: NSUTF8StringEncoding]; free(answer); return results; } - (NSString *)modelIdentifier { return [self getSysInfoByName:"hw.machine"]; } @end