Please check the code below:
UIDevice_enhanced.h
@interface UIDevice (Enhanced) typedef enum { kUnknownPlatform = 0, kiPhone1G, kiPhone3G, kiPhone3GS, kiPhone4, kiPhone4Verizon, kiPhone4S, kiPhone5GSM, kiPhone5CDMA, kiPhone5CGSM, kiPhone5CCDMA, kiPhone5SGSM, kiPhone5SCDMA, kiPhone6, kiPhone6P, kiPhone6S, kiPhone6SP, kiPodTouch1G, kiPodTouch2G, kiPodTouch3G, kiPodTouch4G, kiPodTouch5G, kiPad, kiPad2Wifi, kiPad2GSM, kiPad2CMDA, kiPad3Wifi, kiPad3GSM, kiPad3CMDA, kiPad4Wifi, kiPad4GSM, kiPad4CMDA, kiPadAirWifi, kiPadAirCellular, kiPadMiniWifi, kiPadMiniGSM, kiPadMiniCDMA, kiPadMini2GWifi, kiPadMini2GCellular, kSimulator } PlatformType; - (NSString *) platformName; - (PlatformType) platform; @end
UIDevice_enhanced.m
#import "UIDevice_enhanced.h" #include <sys/utsname.h> @interface UIDevice (Enhanced) - (NSString *) platformCode; @end @implementation UIDevice (Enhanced) // Utility method (private) - (NSString*) platformCode { struct utsname systemInfo; uname(&systemInfo); NSString* platform = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; return platform; } // Public method to use - (NSString*) platformName { NSString* platform = [self platformCode]; 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,1"]) return @"iPhone 6 Plus"; if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus"; if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s"; 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,4"]) return @"iPad mini 2G (WiFi)"; if ([platform isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)"; if ([platform isEqualToString:@"i386"]) return @"Simulator"; if ([platform isEqualToString:@"x86_64"]) return @"Simulator"; return platform; } // Public method to use - (PlatformType) platform { NSString *platform = [self platformCode]; if ([platform isEqualToString:@"iPhone1,1"]) return kiPhone1G; if ([platform isEqualToString:@"iPhone1,2"]) return kiPhone3G; if ([platform isEqualToString:@"iPhone2,1"]) return kiPhone3GS; if ([platform isEqualToString:@"iPhone3,1"]) return kiPhone4; if ([platform isEqualToString:@"iPhone3,2"]) return kiPhone4Verizon; if ([platform isEqualToString:@"iPhone4,1"]) return kiPhone4S; if ([platform isEqualToString:@"iPhone5,1"]) return kiPhone5GSM; if ([platform isEqualToString:@"iPhone5,2"]) return kiPhone5CDMA; if ([platform isEqualToString:@"iPhone5,3"]) return kiPhone5CGSM; if ([platform isEqualToString:@"iPhone5,4"]) return kiPhone5CCDMA; if ([platform isEqualToString:@"iPhone6,1"]) return kiPhone5SGSM; if ([platform isEqualToString:@"iPhone6,2"]) return kiPhone5SCDMA; if ([platform isEqualToString:@"iPhone7,1"]) return kiPhone6P; if ([platform isEqualToString:@"iPhone7,2"]) return kiPhone6; if ([platform isEqualToString:@"iPhone8,2"]) return kiPhone6SP; if ([platform isEqualToString:@"iPhone8,1"]) return kiPhone6S; if ([platform isEqualToString:@"iPod1,1"]) return kiPodTouch1G; if ([platform isEqualToString:@"iPod2,1"]) return kiPodTouch2G; if ([platform isEqualToString:@"iPod3,1"]) return kiPodTouch3G; if ([platform isEqualToString:@"iPod4,1"]) return kiPodTouch4G; if ([platform isEqualToString:@"iPod5,1"]) return kiPodTouch5G; if ([platform isEqualToString:@"iPad1,1"]) return kiPad; if ([platform isEqualToString:@"iPad2,1"]) return kiPad2Wifi; if ([platform isEqualToString:@"iPad2,2"]) return kiPad2GSM; if ([platform isEqualToString:@"iPad2,3"]) return kiPad2CMDA; if ([platform isEqualToString:@"iPad2,4"]) return kiPad2Wifi; if ([platform isEqualToString:@"iPad2,5"]) return kiPadMiniWifi; if ([platform isEqualToString:@"iPad2,6"]) return kiPadMiniGSM; if ([platform isEqualToString:@"iPad2,7"]) return kiPadMiniCDMA; if ([platform isEqualToString:@"iPad3,1"]) return kiPad3Wifi; if ([platform isEqualToString:@"iPad3,2"]) return kiPad3CDMA; if ([platform isEqualToString:@"iPad3,3"]) return kiPad3GSM; if ([platform isEqualToString:@"iPad3,4"]) return kiPad4Wifi; if ([platform isEqualToString:@"iPad3,5"]) return kiPad4GSM; if ([platform isEqualToString:@"iPad3,6"]) return kiPad4CDMA; if ([platform isEqualToString:@"iPad4,1"]) return kiPadAirWifi; if ([platform isEqualToString:@"iPad4,2"]) return kiPadAirCellular; if ([platform isEqualToString:@"iPad4,4"]) return kiPadMini2GWifi; if ([platform isEqualToString:@"iPad4,5"]) return kiPadMini2GCellular; if ([platform isEqualToString:@"i386"]) return kSimulator; if ([platform isEqualToString:@"x86_64"]) return kSimulator; return kUnknownPlatform; } @end
Hope this works for you ...