I have following code snip to detect the iOS Device.
NSString * platformNSString () {
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 = platformNSString();
// iphones
if ([platform isEqualToString:@"iPhone1,1"]) return @"iPhone 2G";
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,2"]) return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"]) return @"iPhone 4 (CDMA)";
if ([platform isEqualToString:@"iPhone4,1"]) return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c (UK+Europe+Asis+China)";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s (UK+Europe+Asis+China)";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6 Plus";
// ipods
if ([platform isEqualToString:@"iPod1,1"]) return @"iPod Touch (1 Gen)";
if ([platform isEqualToString:@"iPod2,1"]) return @"iPod Touch (2 Gen)";
if ([platform isEqualToString:@"iPod3,1"]) return @"iPod Touch (3 Gen)";
if ([platform isEqualToString:@"iPod4,1"]) return @"iPod Touch (4 Gen)";
if ([platform isEqualToString:@"iPod5,1"]) return @"iPod Touch (5 Gen)";
// ipads
if ([platform isEqualToString:@"iPad1,1"]) return @"iPad";
if ([platform isEqualToString:@"iPad1,2"]) return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"]) return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"]) return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"]) return @"iPad Mini";
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";
if ([platform isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"]) return @"iPad 4";
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 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,4"]) return @"iPad Mini Retina (WiFi)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,5"]) return @"iPad Mini Retina (GSM+CDMA)";
// iPad5,3
// simulators
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {
}
else return @"Unknown";
return platform;
}
What I am also expecting is to have list of iOS Simulators as well?
See following image.
In short, I also want to detect what type of simulator with what iOS version is being used run-time as we detect the device.
Here is the code block of which indicates my efforts on same.
// simulators
if ([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"] || [platform isEqualToString:@"ppc"] || [platform isEqualToString:@"ppc64"]) {
CGSize size = [[UIScreen mainScreen] bounds].size;
CGFloat simulatorHeight = (size.height>size.width)?size.height:size.width;
if(simulatorHeight>=2048) {
return @"Retina iPad Simulator";
} else if(simulatorHeight>=1920) {
return @"Retina iPhone 6+ Simulator";
} else if(simulatorHeight>=1334) {
return @"Retina iPhone 6 Simulator";
} else if(simulatorHeight>=1136) {
return @"Retina iPhone 5/5S/5C Simulator";
} else if(simulatorHeight>=960) {
return @"Retina iPhone 4/4S Simulator";
} else if(simulatorHeight>=480) {
return @"Retina iPhone 4/4S Simulator";
}
}
You'll need to go to Settings > Advanced and check the Show Debug Menu option. Then you'll see the option to open the web inspector for the Simulator right from that menu. With the Web Inspector open, you can debug inside the Simulator just like you could right in a desktop browser with DevTools.
An iOS Simulator basically mimics an iOS app or browser on top of a developer's operating system. This is viewable in an iPad or iPhone like window. They cannot virtualize the actual hardware conditions of an iOS device, which is the main requirement for comprehensive testing and debugging.
Finding your device ID is straightforward whether you have an Android or an Apple device. For an Android enter “*#*#8255#*#*” into the keypad.
As indicated in my comment above, you really shouldn't need this information.
But in the interest of at least providing an answer, with Xcode 6, you can use getenv("SIMULATOR_MODEL_IDENTIFIER")
instead of sysctlbyname("hw.machine", ...)
. There's no guarantee that this will work in future releases.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With