我想识别安装了我的应用程序的设备。 这意味着,当我在iPhone上安装应用程序时,它应该告诉我设备信息。信息就像,设备是2G,3G或3GS。以编程方式标识iphone设备
目前,我只得到了型号,名称,系统名称,设备的systemVersion。
我想知道该设备是2G,3G或3GS。
请帮帮我。
我想识别安装了我的应用程序的设备。 这意味着,当我在iPhone上安装应用程序时,它应该告诉我设备信息。信息就像,设备是2G,3G或3GS。以编程方式标识iphone设备
目前,我只得到了型号,名称,系统名称,设备的systemVersion。
我想知道该设备是2G,3G或3GS。
请帮帮我。
在过去的Mac编程历史中,这总被认为是错误的问题。
你真正需要知道的是更具体的资料片。针对代码中的每个行为决策提出一个更狭窄的问题。例如,您可能需要知道设备是否具有GPS。另一个原因是你不应该决定如何使用基于它的模型设备的OpenGL堆栈,而是基于提供的OpenGL功能/扩展信息。
你现在得到的信息是从的UIDevice,这是一个不幸的是设计不良的API。它以最糟糕的格式为您提供完全错误的信息 - 字符串。
埃丽卡丧盾具有延伸到的UIDevice可能有用here。这只是sysctlbyname("hw.machine", ...)
的包装。这个属性对于每个模型都是不同的。
但是,这通常是错误的问题。
同意。除非您正在开发一款应用程序,只需在公司车队中清点所有不同的iPhone,并且需要对其进行分类,否则您可能不需要知道它是3G还是3G,就好像它是否支持功能你想访问。 使用AvailibilityMacros查找设备是否支持您需要的功能。 – mahboudz 2009-09-10 10:59:15
这是我在我的应用程序使用,它的伟大工程
NSString *deviceType = [UIDevice currentDevice].model;
NSLog(@"DEVICE TYPE %@", deviceType);
struct utsname systemInfo;
uname(&systemInfo);
- (NSString *) platformString{
NSString *platform = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
NSLog(@"type ...%@", platform);
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:@"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:@"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:@"i386"]) return @"Simulator";
return platform;
}
希望它可以帮助
嘿兄弟!这帮助了我!非常感谢 ! :) – 2012-05-15 08:13:48
我做了这个,它甚至可以显示你的型号:
struct utsname systemInfo;
uname(&systemInfo);
NSString *modelName = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
NSString *machinename = [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
NSString *modelnumber = @"Not listed";
//Simulator
if([modelName isEqualToString:@"i386"] || [modelName isEqualToString:@"x86_64"]) {
modelName = @"iPhone Simulator";
modelnumber = @"XXXXX";
}
//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 = @"Not listed";
}
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,machinename,modelnumber);
做了我答案有帮助? – Oliver 2011-11-03 12:57:54