如何通过编程区分iPhone4和iPhone4S?
我正在开发一款需要检查iphone型号的应用程序,但我找不到任何解决方案。非常感谢您的建议。尝试使用以下方法:您将获得设备的所有详细信息如何通过编程区分iPhone4和iPhone4S?,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在开发一款需要检查iphone型号的应用程序,但我找不到任何解决方案。非常感谢您的建议。尝试使用以下方法:您将获得设备的所有详细信息 NSLog(@"uniqueIdentifier: %@", [[UIDevice currentDevice] uniqueIdentifier]); NSLog(@"name: %@", [[UIDevice currentDevice] name]); NSLog(@"systemName: %@", [[UIDevice currentDevice]
NSLog(@"uniqueIdentifier: %@", [[UIDevice currentDevice] uniqueIdentifier]);
NSLog(@"name: %@", [[UIDevice currentDevice] name]);
NSLog(@"systemName: %@", [[UIDevice currentDevice] systemName]);
NSLog(@"systemVersion: %@", [[UIDevice currentDevice] systemVersion]);
NSLog(@"model: %@", [[UIDevice currentDevice] model]);
NSLog(@"localizedModel: %@", [[UIDevice currentDevice] localizedModel]);
如果上述方法不适用于您,请使用
编辑:
无论您使用的是iPhone还是iPod Touch:
UIDevice *device = [UIDevice currentDevice];
NSString *systemName = [device systemName];
要检测操作系统的版本,请执行以下操作:
UIDevice *device = [UIDevice currentDevice];
NSString *systemVersion = [device systemVersion];
供参考:
以下是检索设备模型的常用方法。没有NS方法,所以必须使用c
#include <sys/types.h>
#include <sys/sysctl.h>
- (NSString *)machine {
NSString *machine;
size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *name = malloc(size);
sysctlbyname("hw.machine", name, &size, NULL, 0);
machine = [NSString stringWithUTF8String:name];
free(name);
return machine;
}
#包括
#包括
-(NSString*)机器{
NSString*机器;
大小;
sysctlbyname(“hw.machine”,NULL,&size,NULL,0);
char*name=malloc(大小);
sysctlbyname(“hw.machine”,名称和大小,NULL,0);
machine=[nsstringwithutf8string:name];
免费(姓名);
返回机;
}
这是一个更简单的方法简单到只需复制和粘贴即可
另外,我还包括了匹配机器名的模型名
//MARK: Required import
#import <sys/utsname.h>
+ (NSString*)deviceModelName {
struct utsname systemInfo;
uname(&systemInfo);
NSString *machineName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
//MARK: More official list is at
//http://theiphonewiki.com/wiki/Models
//MARK: You may just return machineName. Following is for convenience
NSDictionary *commonNamesDictionary =
@{
@"i386": @"iPhone Simulator",
@"x86_64": @"iPad Simulator",
@"iPhone1,1": @"iPhone",
@"iPhone1,2": @"iPhone 3G",
@"iPhone2,1": @"iPhone 3GS",
@"iPhone3,1": @"iPhone 4",
@"iPhone3,2": @"iPhone 4(Rev A)",
@"iPhone3,3": @"iPhone 4(CDMA)",
@"iPhone4,1": @"iPhone 4S",
@"iPhone5,1": @"iPhone 5(GSM)",
@"iPhone5,2": @"iPhone 5(GSM+CDMA)",
@"iPhone5,3": @"iPhone 5c(GSM)",
@"iPhone5,4": @"iPhone 5c(GSM+CDMA)",
@"iPhone6,1": @"iPhone 5s(GSM)",
@"iPhone6,2": @"iPhone 5s(GSM+CDMA)",
@"iPhone7,1": @"iPhone 6+ (GSM+CDMA)",
@"iPhone7,2": @"iPhone 6 (GSM+CDMA)",
@"iPhone8,1": @"iPhone 6S (GSM+CDMA)",
@"iPhone8,2": @"iPhone 6S+ (GSM+CDMA)",
@"iPad1,1": @"iPad",
@"iPad2,1": @"iPad 2(WiFi)",
@"iPad2,2": @"iPad 2(GSM)",
@"iPad2,3": @"iPad 2(CDMA)",
@"iPad2,4": @"iPad 2(WiFi Rev A)",
@"iPad2,5": @"iPad Mini 1G (WiFi)",
@"iPad2,6": @"iPad Mini 1G (GSM)",
@"iPad2,7": @"iPad Mini 1G (GSM+CDMA)",
@"iPad3,1": @"iPad 3(WiFi)",
@"iPad3,2": @"iPad 3(GSM+CDMA)",
@"iPad3,3": @"iPad 3(GSM)",
@"iPad3,4": @"iPad 4(WiFi)",
@"iPad3,5": @"iPad 4(GSM)",
@"iPad3,6": @"iPad 4(GSM+CDMA)",
@"iPad4,1": @"iPad Air(WiFi)",
@"iPad4,2": @"iPad Air(GSM)",
@"iPad4,3": @"iPad Air(GSM+CDMA)",
@"iPad5,3": @"iPad Air 2 (WiFi)",
@"iPad5,4": @"iPad Air 2 (GSM+CDMA)",
@"iPad4,4": @"iPad Mini 2G (WiFi)",
@"iPad4,5": @"iPad Mini 2G (GSM)",
@"iPad4,6": @"iPad Mini 2G (GSM+CDMA)",
@"iPad4,7": @"iPad Mini 3G (WiFi)",
@"iPad4,8": @"iPad Mini 3G (GSM)",
@"iPad4,9": @"iPad Mini 3G (GSM+CDMA)",
@"iPod1,1": @"iPod 1st Gen",
@"iPod2,1": @"iPod 2nd Gen",
@"iPod3,1": @"iPod 3rd Gen",
@"iPod4,1": @"iPod 4th Gen",
@"iPod5,1": @"iPod 5th Gen",
@"iPod7,1": @"iPod 6th Gen",
};
NSString *deviceName = commonNamesDictionary[machineName];
if (deviceName == nil) {
deviceName = machineName;
}
return deviceName;
}
//标记:需要导入
#进口
+(NSString*)设备模型名称{
结构utsname系统信息;
uname(&systemInfo);
NSString*machineName=[NSString stringWithCString:systemInfo.machine编码:NSUTF8StringEncoding];
//马克:更多的官方名单在
//http://theiphonewiki.com/wiki/Models
//马克:您只需返回machineName。以下是为了方便
NSDictionary*通用名称词典=
@{
@“i386”:@“iPhone模拟器”,
@“x86_64”:@“iPad模拟器”,
@“iPhone 1,1”:@“iPhone”,
@“iPhone1,2”:“iPhone3G”,
@“iPhone2,1”:“iPhone3GS”,
@“iPhone3,1”:“iPhone4”,
@"iPhone3,2:"iphone4(A版),,
@"iPhone3,3:"iphone4(CDMA),,
@“iPhone4,1”:“iPhone4S”,
@"iPhone5,1:"iPhone5(GSM),,
@"iPhone5,2:"iPhone5(GSM+CDMA),,
@"iPhone5,3:"iphone5c(GSM),,
@"iPhone5,4:"iphone5c(GSM+CDMA),,
@"iPhone6,1:"iphone5s(GSM),,
@"iPhone6,2:"iphone5s(GSM+CDMA),,
@"iPhone7,1:"iphone6+(GSM+CDMA),,
@"iPhone7,2:"iphone6(GSM+CDMA),,
@"iPhone8,1:"iphone6s(GSM+CDMA),,
@"iPhone8,2:"iphone6s+(GSM+CDMA),,
@“iPad1,1”:“iPad”,
@"iPad2,1:"iPad2(WiFi),,
@"iPad2,2:"iPad2(GSM),,
@"iPad2,3:"iPad2(CDMA),,
@“iPad2,4”:“iPad2(WiFi版本A)”,
@"iPad2,5:"iPad Mini 1G(WiFi),,
@"iPad2,6:"iPad Mini 1G(GSM),,
@"iPad2,7:"iPad Mini 1G(GSM+CDMA),,
@"iPad3,1:"iPad3(WiFi),,
@"iPad3,2:"iPad3(GSM+CDMA),,
@"iPad3,3:"iPad3(GSM),,
@"iPad3,4:"ipad4(WiFi),,
@"iPad3,5:"ipad4(GSM),,
@"iPad3,6:"ipad4(GSM+CDMA),,
@"iPad4,1:"iPad Air(WiFi),,
@"iPad4,2:"iPad Air(GSM),,
@"iPad4,3:"iPad Air(GSM+CDMA),,
@"iPad5,3:"iPad Air 2(WiFi),,
@"iPad5,4:"ipadair2(GSM+CDMA),,
@"iPad4,4:"iPad Mini 2G(WiFi),,
@"iPad4,5:"iPad Mini 2G(GSM),,
@"iPad4,6:"iPad Mini 2G(GSM+CDMA),,
@"iPad4,7:"iPad Mini 3G(WiFi),,
@"iPad4,8:"iPad Mini 3G(GSM),,
@"iPad4,9:"iPad Mini 3G(GSM+CDMA),,
@“iPod 1,1”:“iPod第一代”,
@“iPod 2,1”:“iPod第二代”,
@“iPod 3,1”:“iPod第三代”,
@“iPod 4,1”:“iPod第四代”,
@“iPod 5,1”:“iPod第五代”,
@“iPod 7,1”:“iPod第六代”,
};
NSString*deviceName=commonNamesDictionary[machineName];
如果(deviceName==nil){
deviceName=machineName;
}
返回设备名称;
}
出于我的目的,我编写了一个小型库,它抽象了底层的C调用,并提供了一个Objective-C接口
NSLog(@"Big model number: %d", deviceDetails.bigModel);
//Big model number: 4
NSLog(@"Small model number: %d", deviceDetails.smallModel);
//Small model number: 1
if (deviceDetails.model == GBDeviceModeliPhone4S) {
NSLog(@"It's a 4S");
}
//It's a 4S
if (deviceDetails.family != GBDeviceFamilyiPad) {
NSLog(@"It's not an iPad");
}
//It's not an iPad
NSLog(@"systemInfo string: %@", [GBDeviceInfo rawSystemInfoString]);
//systemInfo string: iPhone4,1
在github上:
}使用此代码。这是任何实际iDevice和型号的完整列表,可通过检查轻松更新该列表
#导入
结构utsname系统信息;
uname(&systemInfo);
NSString*modelName=[NSString stringWithCString:systemInfo.machine
编码:NSUTF8StringEncoding];
NSString*machinename=[NSString stringWithCString:systemInfo.machine
编码:NSUTF8StringEncoding];
NSString*modelnumber=@“?”;
//模拟机
如果([modelName IsequalString:@“i386”]| |[modelName IsequalString:@“x86_64”])){
modelName=@“iPhone模拟器”;
}
//iPhone
else if([modelName IsequalString:@“iPhone1,1”]){
modelName=@“iPhone”;
型号=@“A1203”;
}
else if([modelName IsequalString:@“iPhone1,2”]){
modelName=@“iPhone 3G”;
型号=@“A1241/A1324”;
}
else if([modelName IsequalString:@“iPhone2,1”]){
modelName=@“iPhone 3GS”;
型号=@“A1303/A1325”;
}
else if([modelName IsequalString:@“iPhone3,1”]){
modelName=@“iPhone4(GSM)”;
型号=@“A1332”;
}
else if([modelName IsequalString:@“iPhone3,2”]){
modelName=@“iPhone 4 GSM版本A”;
型号=@“?”;
}
else if([modelName IsequalString:@“iPhone3,3”]){
modelName=@“iPhone4(CDMA)”;
型号=@“A1349”;
}
else if([modelName IsequalString:@“iPhone4,1”]){
modelName=@“iphone4s”;
型号=@“A1387/A1431”;
}
else if([modelName IsequalString:@“iPhone5,1”]){
型号名称=@“iPhone 5(GSM)”;
型号=@“A1428”;
}
else if([modelName IsequalString:@“iPhone5,2”]){
型号名称=@“iPhone 5(GSM+CDMA)”;
型号=@“A1429/A1442”;
}
//iPodtouch
else if([modelName IsequalString:@“iPod1,1”]){
modelName=@“iPod touch 1G”;
型号=@“A1213”;
}
else if([modelName isEqualToString:@“iPod2,1”]){
modelName=@“iPod touch 2G”;
型号=@“A1288”;
}
else if([modelName isEqualToString:@“iPod3,1”]){
modelName=@“iPod touch 3G”;
型号=@“A1318”;
}
else if([modelName isEqualToString:@“iPod4,1”]){
modelName=@“iPod touch 4G”;
型号=@“A1367”;
}
else if([modelName isEqualToString:@“iPod5,1”]){
型号名称=@“iPod touch 5G”;
Update a list of devices:
In future will be updated with iPad 4.
+ (NSString*)deviceModelName {
/*
@"i386" on the simulator
@"x86_64" on the simulator
@"iPod1,1" on iPod Touch
@"iPod2,1" on iPod Touch Second Generation
@"iPod3,1" on iPod Touch Third Generation
@"iPod4,1" on iPod Touch Fourth Generation
@"iPod5,1" on iPod Touch Fourth Generation
@"iPhone1,1" on iPhone
@"iPhone1,2" on iPhone 3G
@"iPhone2,1" on iPhone 3GS
@"iPad1,1" on iPad
@"iPad2,1" on iPad 2
@"iPad2,5" on iPad mini 1
@"iPad3,1" on iPad 3
@"iPhone3,1" on iPhone 4
@"iPhone4,1" on iPhone 4S
@"iPhone5,1" on iPhone 5
*/
struct utsname systemInfo;
uname(&systemInfo);
NSString *modelName = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
if([modelName isEqualToString:@"i386"] || [modelName isEqualToString:@"x86_64"]) {
modelName = @"iPhone Simulator";
}
else if([modelName isEqualToString:@"iPhone1,1"]) {
modelName = @"iPhone";
}
else if([modelName isEqualToString:@"iPhone1,2"]) {
modelName = @"iPhone 3G";
}
else if([modelName isEqualToString:@"iPhone2,1"]) {
modelName = @"iPhone 3GS";
}
else if([modelName isEqualToString:@"iPhone3,1"]) {
modelName = @"iPhone 4";
}
else if([modelName isEqualToString:@"iPhone4,1"]) {
modelName = @"iPhone 4S";
}
else if([modelName isEqualToString:@"iPhone5,1"]) {
modelName = @"iPhone 5";
}
else if([modelName isEqualToString:@"iPod1,1"]) {
modelName = @"iPod 1st Gen";
}
else if([modelName isEqualToString:@"iPod2,1"]) {
modelName = @"iPod 2nd Gen";
}
else if([modelName isEqualToString:@"iPod3,1"]) {
modelName = @"iPod 3rd Gen";
}
else if([modelName isEqualToString:@"iPod4,1"]) {
modelName = @"iPod 4th Gen";
}
else if([modelName isEqualToString:@"iPod5,1"]) {
modelName = @"iPod 5th Gen";
}
else if([modelName isEqualToString:@"iPad1,1"]) {
modelName = @"iPad";
}
else if([modelName isEqualToString:@"iPad2,1"]) {
modelName = @"iPad 2(WiFi)";
}
else if([modelName isEqualToString:@"iPad2,2"]) {
modelName = @"iPad 2(GSM)";
}
else if([modelName isEqualToString:@"iPad2,3"]) {
modelName = @"iPad 2(CDMA)";
}
else if([modelName isEqualToString:@"iPad2,4"]) {
modelName = @"iPad 2(WiFi + New Chip)";
}
else if([modelName isEqualToString:@"iPad2,5"]) {
modelName = @"iPad mini (WiFi)";
}
else if([modelName isEqualToString:@"iPad2,6"]) {
modelName = @"iPad mini (GSM)";
}
else if([modelName isEqualToString:@"iPad3,1"]) {
modelName = @"iPad 3(WiFi)";
}
else if([modelName isEqualToString:@"iPad3,2"]) {
modelName = @"iPad 3(GSM)";
}
else if([modelName isEqualToString:@"iPad3,3"]) {
modelName = @"iPad 3(CDMA)";
}
return modelName;
#import <sys/utsname.h>
struct utsname systemInfo;
uname(&systemInfo);
NSString *modelName = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
NSString *machinename = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
NSString *modelnumber = @"?";
//Simulator
if([modelName isEqualToString:@"i386"] || [modelName isEqualToString:@"x86_64"]) {
modelName = @"iPhone Simulator";
}
//iPhone
else if([modelName isEqualToString:@"iPhone1,1"]) {
modelName = @"iPhone";
modelnumber = @"A1203";
}
else if([modelName isEqualToString:@"iPhone1,2"]) {
modelName = @"iPhone 3G";
modelnumber = @"A1241/A1324";
}
else if([modelName isEqualToString:@"iPhone2,1"]) {
modelName = @"iPhone 3GS";
modelnumber = @"A1303/A1325";
}
else if([modelName isEqualToString:@"iPhone3,1"]) {
modelName = @"iPhone 4 (GSM)";
modelnumber = @"A1332";
}
else if([modelName isEqualToString:@"iPhone3,2"]) {
modelName = @"iPhone 4 GSM Rev A";
modelnumber = @"?";
}
else if([modelName isEqualToString:@"iPhone3,3"]) {
modelName = @"iPhone 4 (CDMA)";
modelnumber = @"A1349";
}
else if([modelName isEqualToString:@"iPhone4,1"]) {
modelName = @"iPhone 4S";
modelnumber = @"A1387/A1431";
}
else if([modelName isEqualToString:@"iPhone5,1"]) {
modelName = @"iPhone 5 (GSM)";
modelnumber = @"A1428";
}
else if([modelName isEqualToString:@"iPhone5,2"]) {
modelName = @"iPhone 5 (GSM+CDMA)";
modelnumber = @"A1429/A1442";
}
//iPod touch
else if([modelName isEqualToString:@"iPod1,1"]) {
modelName = @"iPod touch 1G";
modelnumber = @"A1213";
}
else if([modelName isEqualToString:@"iPod2,1"]) {
modelName = @"iPod touch 2G";
modelnumber = @"A1288";
}
else if([modelName isEqualToString:@"iPod3,1"]) {
modelName = @"iPod touch 3G";
modelnumber = @"A1318";
}
else if([modelName isEqualToString:@"iPod4,1"]) {
modelName = @"iPod touch 4G";
modelnumber = @"A1367";
}
else if([modelName isEqualToString:@"iPod5,1"]) {
modelName = @"iPod touch 5G";
modelnumber = @"A1421";
}
//iPad
else if([modelName isEqualToString:@"iPad1,1"]) {
modelName = @"iPad 1G";
modelnumber = @"A1219/A1337";
}
else if([modelName isEqualToString:@"iPad2,1"]) {
modelName = @"iPad 2 (WiFi)";
modelnumber = @"A1395";
}
else if([modelName isEqualToString:@"iPad2,2"]) {
modelName = @"iPad 2 (GSM)";
modelnumber = @"A1396";
}
else if([modelName isEqualToString:@"iPad2,3"]) {
modelName = @"iPad 2 (CDMA)";
modelnumber = @"A1397";
}
else if([modelName isEqualToString:@"iPad2,4"]) {
modelName = @"iPad 2 (WiFi + Rev A)";
modelnumber = @"A1395";
}
else if([modelName isEqualToString:@"iPad3,1"]) {
modelName = @"iPad 3 (WiFi)";
modelnumber = @"A1416";
}
else if([modelName isEqualToString:@"iPad3,2"]) {
modelName = @"iPad 3 (GSM+CDMA)";
modelnumber = @"A1403";
}
else if([modelName isEqualToString:@"iPad3,3"]) {
modelName = @"iPad 3 (GSM)";
modelnumber = @"A1430";
}
else if([modelName isEqualToString:@"iPad3,4"]) {
modelName = @"iPad 4 (WiFi)";
modelnumber = @"A1458";
}
else if([modelName isEqualToString:@"iPad3,5"]) {
modelName = @"iPad 4 (GSM)";
modelnumber = @"A1459";
}
else if([modelName isEqualToString:@"iPad3,6"]) {
modelName = @"iPad 4 (GSM+CDMA)";
modelnumber = @"A1460";
}
//iPad mini
else if([modelName isEqualToString:@"iPad2,5"]) {
modelName = @"iPad mini (WiFi)";
modelnumber = @"A1432";
}
else if([modelName isEqualToString:@"iPad2,6"]) {
modelName = @"iPad mini (GSM)";
modelnumber = @"A1454";
}
else if([modelName isEqualToString:@"iPad2,7"]) {
modelName = @"iPad mini (GSM+CDMA)";
modelnumber = @"A1455";
}
//Apple TV, just for funn:)
else if([modelName isEqualToString:@"AppleTV2,1"]) {
modelName = @"Apple TV 2G";
modelnumber = @"A1378";
}
else if([modelName isEqualToString:@"AppleTV3,1"]) {
modelName = @"Apple TV 3G";
modelnumber = @"A1427";
}
else if([modelName isEqualToString:@"AppleTV3,2"]) {
modelName = @"Apple TV 3G (Rev A)";
modelnumber = @"A1469";
}
NSLog(@"Device model: %@/ %@",modelName,modelnumber);
// ******************* DEVICE INDENTIFICATION MACROS *****************//
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE4 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 480.0f)
#define IS_IPHONE5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f)
#define IS_IPHONE6 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 667.0)
#define IS_IPHONE6PLUS (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 736.0)
#define IS_RETINA ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] && ([UIScreen mainScreen].scale == 2.0))