|
// |
|
// UIDeviceHardware.m |
|
// |
|
// Used to determine EXACT version of device software is running on. |
|
// |
|
// Based shamelessly upon https://gist.github.com/Jaybles/1323251 |
|
// |
|
|
|
#import "UIDeviceHardware.h" |
|
#include <sys/types.h> |
|
#include <sys/sysctl.h> |
|
|
|
@implementation UIDeviceHardware |
|
|
|
+ (NSString *) platform{ |
|
size_t size; |
|
sysctlbyname("hw.machine", NULL, &size, NULL, 0); |
|
char *machine = malloc(size); |
|
sysctlbyname("hw.machine", machine, &size, NULL, 0); |
|
NSString *platform = [NSString stringWithUTF8String:machine]; |
|
free(machine); |
|
return platform; |
|
} |
|
|
|
+ (NSString *) platformString{ |
|
NSString *platform = [self platform]; |
|
|
|
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; |
|
else if ([platform isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; |
|
else if ([platform isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; |
|
else if ([platform isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; |
|
else if ([platform isEqualToString:@"iPhone3,3"]) return @"Verizon iPhone 4"; |
|
else if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; |
|
else if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5 (GSM)"; |
|
else if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM)"; |
|
else if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM)"; |
|
else if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus"; |
|
else if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; |
|
else if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s Plus"; |
|
else if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s"; |
|
else if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; |
|
else if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; |
|
else if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; |
|
else if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; |
|
else if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G"; |
|
else if ([platform isEqualToString:@"iPad1,1"]) return @"iPad"; |
|
else if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; |
|
else if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; |
|
else if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2 (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini (GSM)"; |
|
else if ([platform isEqualToString:@"iPad2,7"]) return @"iPad Mini (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPad3,1"]) return @"iPad 3 (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad3,2"]) return @"iPad 3 (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPad3,3"]) return @"iPad 3 (GSM)"; |
|
else if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4 (GSM)"; |
|
else if ([platform isEqualToString:@"iPad3,6"]) return @"iPad 4 (GSM+CDMA)"; |
|
else if ([platform isEqualToString:@"iPad4,1"]) return @"iPad Air (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad4,2"]) return @"iPad Air (Cellular)"; |
|
else if ([platform isEqualToString:@"iPad4,4"]) return @"iPad mini 2G (WiFi)"; |
|
else if ([platform isEqualToString:@"iPad4,5"]) return @"iPad mini 2G (Cellular)"; |
|
else if ([platform isEqualToString:@"i386"]) return @"Simulator"; |
|
else if ([platform isEqualToString:@"x86_64"]) return @"Simulator"; |
|
return platform; |
|
} |
|
|
|
+ (BOOL) deviceIsKindOfType:(UIDeviceType) type { |
|
UIDeviceType thisDeviceType = [self deviceType]; |
|
|
|
return (thisDeviceType & type) > 0; |
|
} |
|
|
|
+(UIDeviceType)deviceType { |
|
UIDeviceType thisDeviceType = 0; |
|
|
|
NSString* platform = [self platform]; |
|
|
|
if ([platform hasPrefix:@"iPhone"]) { |
|
thisDeviceType = UIDeviceTypeiPhone; |
|
} else if ([platform hasPrefix:@"iPod"]) { |
|
thisDeviceType = UIDeviceTypeiPod; |
|
} else if ([platform hasPrefix:@"iPad"]) { |
|
thisDeviceType = UIDeviceTypeiPad; |
|
} else { |
|
/** |
|
* @todo |
|
* |
|
* In the future if more iOS devices are introduced, this will have to be extended. |
|
*/ |
|
thisDeviceType = UIDeviceTypeSimulator; |
|
} |
|
|
|
return thisDeviceType; |
|
} |
|
|
|
+(BOOL)deviceIsiPhone { |
|
return [self deviceIsKindOfType:UIDeviceTypeiPhone]; |
|
} |
|
|
|
+(BOOL)deviceIsiPod { |
|
return [self deviceIsKindOfType:UIDeviceTypeiPod]; |
|
} |
|
|
|
+(BOOL)deviceIsiPad { |
|
return [self deviceIsKindOfType:UIDeviceTypeiPad]; |
|
} |
|
|
|
+(BOOL)deviceIsSimulator { |
|
return [self deviceIsKindOfType:UIDeviceTypeSimulator]; |
|
} |
|
|
|
|
|
|
|
@end |