diff --git a/UIDevice+HardwareModel.h b/UIDevice+HardwareModel.h index b519f13..c9fe91b 100644 --- a/UIDevice+HardwareModel.h +++ b/UIDevice+HardwareModel.h @@ -7,61 +7,64 @@ #import -enum UIHardwareModel -{ - UIHardwareModelUnknown = 0, - UIHardwareModelSimulator = 1, +typedef NS_ENUM(NSInteger, UIHighHardwareModel) { + UIHighHardwareModelUnknown = 0, + UIHighHardwareModelSimulator = 1, - UIHardwareModeliPhone1G = 2, - UIHardwareModeliPhone3G = 3, - UIHardwareModeliPhone3GS = 4, - UIHardwareModeliPhone4 = 5, - UIHardwareModeliPhone4Verizon = 6, + UIHighHardwareModeliPhone1G = 2, + UIHighHardwareModeliPhone3G = 3, + UIHighHardwareModeliPhone3GS = 4, + UIHighHardwareModeliPhone4 = 5, + UIHighHardwareModeliPhone4Verizon = 6, - UIHardwareModeliPodTouch1G = 7, - UIHardwareModeliPodTouch2G = 8, - UIHardwareModeliPodTouch3G = 9, - UIHardwareModeliPodTouch4G = 10, + UIHighHardwareModeliPodTouch1G = 7, + UIHighHardwareModeliPodTouch2G = 8, + UIHighHardwareModeliPodTouch3G = 9, + UIHighHardwareModeliPodTouch4G = 10, - UIHardwareModeliPad = 11, - UIHardwareModeliPad2Wifi = 12, - UIHardwareModeliPad2GSM = 13, - UIHardwareModeliPad2CDMA = 14, + UIHighHardwareModeliPad = 11, + UIHighHardwareModeliPad2Wifi = 12, + UIHighHardwareModeliPad2GSM = 13, + UIHighHardwareModeliPad2CDMA = 14, - UIHardwareModeliPhone4S = 15, + UIHighHardwareModeliPhone4S = 15, - UIHardwareModeliPad3Wifi = 16, - UIHardwareModeliPad3GSM = 17, - UIHardwareModeliPad3CDMA = 18, + UIHighHardwareModeliPad3Wifi = 16, + UIHighHardwareModeliPad3GSM = 17, + UIHighHardwareModeliPad3CDMA = 18, - UIHardwareModeliPhone5 = 19, - UIHardwareModeliPhone5Global = 20, + UIHighHardwareModeliPhone5 = 19, + UIHighHardwareModeliPhone5Global = 20, - UIHardwareModeliPodTouch5G = 21, + UIHighHardwareModeliPodTouch5G = 21, - UIHardwareModeliPadMiniWifi = 22, - UIHardwareModeliPadMiniGSM = 23, - UIHardwareModeliPadMiniCDMA = 24, - UIHardwareModeliPad4Wifi = 25, - UIHardwareModeliPad4GSM = 26, - UIHardwareModeliPad4CDMA = 27, + UIHighHardwareModeliPadMiniWifi = 22, + UIHighHardwareModeliPadMiniGSM = 23, + UIHighHardwareModeliPadMiniCDMA = 24, + UIHighHardwareModeliPad4Wifi = 25, + UIHighHardwareModeliPad4GSM = 26, + UIHighHardwareModeliPad4CDMA = 27, - UIHardwareModeliPhone5c = 28, - UIHardwareModeliPhone5cGlobal = 29, + UIHighHardwareModeliPhone5c = 28, + UIHighHardwareModeliPhone5cGlobal = 29, - UIHardwareModeliPhone5s = 30, - UIHardwareModeliPhone5sGlobal = 31, + UIHighHardwareModeliPhone5s = 30, + UIHighHardwareModeliPhone5sGlobal = 31, - UIHardwareModeliPhone6 = 32, - UIHardwareModeliPhone6Plus = 33 + UIHighHardwareModeliPhone6 = 32, + UIHighHardwareModeliPhone6Plus = 33, -}; typedef NSUInteger UIHardwareModel; - -@interface UIDevice (HardwareModel) - + UIHighHardwareModeliPhone6S = 34, + UIHighHardwareModeliPhone6SPlus = 35 +}; +@interface UIDevice (HighHardwareModel) +/** + * Returns hardware name of device instance + */ +- (NSString *)highHardwareName; /** * Returns hardware id of device instance */ --(UIHardwareModel)hardwareModel; +-(UIHighHardwareModel)highHardwareModel; @end diff --git a/UIDevice+HardwareModel.m b/UIDevice+HardwareModel.m index 06e86b5..6b293c8 100644 --- a/UIDevice+HardwareModel.m +++ b/UIDevice+HardwareModel.m @@ -8,11 +8,127 @@ #import "UIDevice+HardwareModel.h" #include -@implementation UIDevice (HardwareModel) - --(UIHardwareModel)hardwareModel +@implementation UIDevice (HighHardwareModel) +- (NSString *)highHardwareName +{ + NSString *name = @"Unknown"; + + switch ([self highHardwareModel]) { + case UIHighHardwareModeliPad: + name = @"iPad 1G"; + break; + case UIHighHardwareModeliPad2CDMA: + name = @"iPad 2 CDMA"; + break; + case UIHighHardwareModeliPad2GSM: + name = @"iPad 2 GSM"; + break; + case UIHighHardwareModeliPad2Wifi: + name = @"iPad 2 Wifi"; + break; + case UIHighHardwareModeliPad3CDMA: + name = @"iPad 3 CDMA"; + break; + case UIHighHardwareModeliPad3GSM: + name = @"iPad 3 GSM"; + break; + case UIHighHardwareModeliPad3Wifi: + name = @"iPad 3 Wifi"; + break; + case UIHighHardwareModeliPad4CDMA: + name = @"iPad 4 CDMA"; + break; + case UIHighHardwareModeliPad4GSM: + name = @"iPad 4 GSM"; + break; + case UIHighHardwareModeliPad4Wifi: + name = @"iPad 4 Wifi"; + break; + case UIHighHardwareModeliPadMiniCDMA: + name = @"iPad mini CDMA"; + break; + case UIHighHardwareModeliPadMiniGSM: + name = @"iPad mini GSM"; + break; + case UIHighHardwareModeliPadMiniWifi: + name = @"iPad mini Wifi"; + break; + case UIHighHardwareModeliPhone1G: + name = @"iPhone 1G"; + break; + case UIHighHardwareModeliPhone3G: + name = @"iPhone 3G"; + break; + case UIHighHardwareModeliPhone3GS: + name = @"iPhone 3Gs"; + break; + case UIHighHardwareModeliPhone4: + name = @"iPhone 4"; + break; + case UIHighHardwareModeliPhone4S: + name = @"iPhone 4s"; + break; + case UIHighHardwareModeliPhone4Verizon: + name = @"iPhone 4 Verizon"; + break; + case UIHighHardwareModeliPhone5: + name = @"iPhone 5"; + break; + case UIHighHardwareModeliPhone5c: + name = @"iPhone 5c"; + break; + case UIHighHardwareModeliPhone5cGlobal: + name = @"iPhone 5c Global"; + break; + case UIHighHardwareModeliPhone5Global: + name = @"iPhone 5 Global"; + break; + case UIHighHardwareModeliPhone5s: + name = @"iPhone 5s"; + break; + case UIHighHardwareModeliPhone5sGlobal: + name = @"iPhone 5s Global"; + break; + case UIHighHardwareModeliPodTouch1G: + name = @"iPod 1G"; + break; + case UIHighHardwareModeliPodTouch2G: + name = @"iPod 2G"; + break; + case UIHighHardwareModeliPodTouch3G: + name = @"iPod 3G"; + break; + case UIHighHardwareModeliPodTouch4G: + name = @"iPod 4G"; + break; + case UIHighHardwareModeliPodTouch5G: + name = @"iPod 5G"; + break; + case UIHighHardwareModelSimulator: + name = @"Simulator"; + break; + case UIHighHardwareModeliPhone6Plus: + name = @"iPhone 6 Plus"; + break; + case UIHighHardwareModeliPhone6: + name = @"iPhone 6"; + break; + case UIHighHardwareModeliPhone6S: + name = @"iPhone 6S"; + break; + case UIHighHardwareModeliPhone6SPlus: + name = @"iPhone 6S Plus"; + break; + default: + name = @"Unknown"; + break; + } + + return name; +} +-(UIHighHardwareModel)highHardwareModel { - static UIHardwareModel _hardwareModel; + static UIHighHardwareModel _hardwareModel; if(!_hardwareModel) { @@ -26,111 +142,117 @@ -(UIHardwareModel)hardwareModel NSString *hwString = [NSString stringWithCString: model encoding: NSUTF8StringEncoding]; free(model); - _hardwareModel = UIHardwareModelUnknown; // Unknown by default + _hardwareModel = UIHighHardwareModelUnknown; // Unknown by default if([hwString isEqualToString: @"i386"] || [hwString isEqualToString:@"x86_64"]) - _hardwareModel = UIHardwareModelSimulator; + _hardwareModel = UIHighHardwareModelSimulator; if([hwString isEqualToString: @"iPhone1,1"]) - _hardwareModel = UIHardwareModeliPhone1G; + _hardwareModel = UIHighHardwareModeliPhone1G; if([hwString isEqualToString: @"iPhone1,2"]) - _hardwareModel = UIHardwareModeliPhone3G; + _hardwareModel = UIHighHardwareModeliPhone3G; if([hwString isEqualToString: @"iPhone2,1"]) - _hardwareModel = UIHardwareModeliPhone3GS; + _hardwareModel = UIHighHardwareModeliPhone3GS; if([hwString isEqualToString: @"iPhone3,1"]) - _hardwareModel = UIHardwareModeliPhone4; + _hardwareModel = UIHighHardwareModeliPhone4; if([hwString isEqualToString: @"iPhone3,2"]) - _hardwareModel = UIHardwareModeliPhone4Verizon; + _hardwareModel = UIHighHardwareModeliPhone4Verizon; if([hwString isEqualToString: @"iPhone4,1"]) - _hardwareModel = UIHardwareModeliPhone4S; + _hardwareModel = UIHighHardwareModeliPhone4S; if([hwString isEqualToString: @"iPod1,1"]) - _hardwareModel = UIHardwareModeliPodTouch1G; + _hardwareModel = UIHighHardwareModeliPodTouch1G; if([hwString isEqualToString: @"iPod2,1"]) - _hardwareModel = UIHardwareModeliPodTouch2G; + _hardwareModel = UIHighHardwareModeliPodTouch2G; if([hwString isEqualToString: @"iPod3,1"]) - _hardwareModel = UIHardwareModeliPodTouch3G; + _hardwareModel = UIHighHardwareModeliPodTouch3G; if([hwString isEqualToString: @"iPod4,1"]) - _hardwareModel = UIHardwareModeliPodTouch4G; + _hardwareModel = UIHighHardwareModeliPodTouch4G; if([hwString isEqualToString: @"iPad1,1"]) - _hardwareModel = UIHardwareModeliPad; + _hardwareModel = UIHighHardwareModeliPad; if([hwString isEqualToString: @"iPad2,1"]) - _hardwareModel = UIHardwareModeliPad2Wifi; + _hardwareModel = UIHighHardwareModeliPad2Wifi; if([hwString isEqualToString: @"iPad2,2"]) - _hardwareModel = UIHardwareModeliPad2GSM; + _hardwareModel = UIHighHardwareModeliPad2GSM; if([hwString isEqualToString: @"iPad2,3"]) - _hardwareModel = UIHardwareModeliPad2CDMA; + _hardwareModel = UIHighHardwareModeliPad2CDMA; if([hwString isEqualToString: @"iPad2,4"]) - _hardwareModel = UIHardwareModeliPad2Wifi; + _hardwareModel = UIHighHardwareModeliPad2Wifi; if([hwString isEqualToString: @"iPad3,1"]) - _hardwareModel = UIHardwareModeliPad3Wifi; + _hardwareModel = UIHighHardwareModeliPad3Wifi; if([hwString isEqualToString: @"iPad3,2"]) - _hardwareModel = UIHardwareModeliPad3GSM; + _hardwareModel = UIHighHardwareModeliPad3GSM; if([hwString isEqualToString: @"iPad3,3"]) - _hardwareModel = UIHardwareModeliPad3CDMA; + _hardwareModel = UIHighHardwareModeliPad3CDMA; if([hwString isEqualToString: @"iPhone5,1"]) - _hardwareModel = UIHardwareModeliPhone5; + _hardwareModel = UIHighHardwareModeliPhone5; if([hwString isEqualToString: @"iPhone5,2"]) - _hardwareModel = UIHardwareModeliPhone5Global; + _hardwareModel = UIHighHardwareModeliPhone5Global; if([hwString isEqualToString: @"iPhone5,3"]) - _hardwareModel = UIHardwareModeliPhone5c; + _hardwareModel = UIHighHardwareModeliPhone5c; if([hwString isEqualToString: @"iPhone5,4"]) - _hardwareModel = UIHardwareModeliPhone5cGlobal; + _hardwareModel = UIHighHardwareModeliPhone5cGlobal; if([hwString isEqualToString: @"iPhone6,1"]) - _hardwareModel = UIHardwareModeliPhone5s; + _hardwareModel = UIHighHardwareModeliPhone5s; if([hwString isEqualToString: @"iPhone6,2"]) - _hardwareModel = UIHardwareModeliPhone5sGlobal; + _hardwareModel = UIHighHardwareModeliPhone5sGlobal; if([hwString isEqualToString: @"iPod5,1"]) - _hardwareModel = UIHardwareModeliPodTouch5G; + _hardwareModel = UIHighHardwareModeliPodTouch5G; if([hwString isEqualToString: @"iPad2,5"]) - _hardwareModel = UIHardwareModeliPadMiniWifi; + _hardwareModel = UIHighHardwareModeliPadMiniWifi; if([hwString isEqualToString: @"iPad2,6"]) - _hardwareModel = UIHardwareModeliPadMiniGSM; + _hardwareModel = UIHighHardwareModeliPadMiniGSM; if([hwString isEqualToString: @"iPad2,7"]) - _hardwareModel = UIHardwareModeliPadMiniCDMA; + _hardwareModel = UIHighHardwareModeliPadMiniCDMA; if([hwString isEqualToString: @"iPad3,4"]) - _hardwareModel = UIHardwareModeliPad4Wifi; + _hardwareModel = UIHighHardwareModeliPad4Wifi; if([hwString isEqualToString: @"iPad3,5"]) - _hardwareModel = UIHardwareModeliPad4GSM; + _hardwareModel = UIHighHardwareModeliPad4GSM; if([hwString isEqualToString: @"iPad3,6"]) - _hardwareModel = UIHardwareModeliPad4CDMA; + _hardwareModel = UIHighHardwareModeliPad4CDMA; - if([hwString isEqualToString: @"iPhone7,1"]) - _hardwareModel = UIHardwareModeliPhone6Plus; + if([hwString isEqualToString: @"iPhone7,1"]) + _hardwareModel = UIHighHardwareModeliPhone6Plus; + if([hwString isEqualToString: @"iPhone7,2"]) + _hardwareModel = UIHighHardwareModeliPhone6; + if([hwString isEqualToString: @"iPhone8,1"]) + _hardwareModel = UIHighHardwareModeliPhone6S; + if([hwString isEqualToString: @"iPhone8,2"]) + _hardwareModel = UIHighHardwareModeliPhone6SPlus; + - if([hwString isEqualToString: @"iPhone7,2"]) - _hardwareModel = UIHardwareModeliPhone6; } + return _hardwareModel; } diff --git a/UIDevice+HardwareModel.podspec b/UIDevice+HardwareModel.podspec new file mode 100644 index 0000000..b5dd5ac --- /dev/null +++ b/UIDevice+HardwareModel.podspec @@ -0,0 +1,13 @@ +Pod::Spec.new do |s| + + s.name = "UIDevice+HardwareModel" + s.version = "1.3" + s.summary = "Check iOS hardware model" + s.homepage = "https://github.com/HighMa/UIDevice-HardwareModel.git" + s.license = { :type => 'MIT', :file => 'LICENSE' } + s.author = { "Wang" => "wangwei@high.ma" } + s.platform = :ios + s.source = { :git => "https://github.com/HighMa/UIDevice-HardwareModel.git" } + s.source_files = '*.{h,m}' + +end