以编程方式识别iphone设备

我想识别安装了我的应用程序的设备。 这意味着,当我在iPhone上安装应用程序,它应该告诉我的设备信息。 这些信息就好比,设备是2G,3G或者3GS。

目前我只获取设备的型号,名称,系统名称,系统版本。

我想知道该设备是2G,3G或3GS。

请帮帮我。

在过去的Mac编程历史中,这总被认为是错误的问题。

你真正需要知道的是一个更具体的信息。 针对您的代码中的每个行为决策提出一个更狭窄的问题。 例如,您可能需要知道设备是否具有GPS。 另一个是你不应该决定如何使用基于它的模型设备的OpenGL堆栈,而是根据提供的OpenGLfunction/扩展信息。

你现在得到的信息是来自UIDevice,这是一个不幸devise不佳的API。 它以最糟糕的格式(string)为您提供完全错误的信息。

Erica Sadun对UIDevice有一个扩展, 在这里可能有用。 这只是sysctlbyname("hw.machine", ...)的包装。 这个属性对于每个模型都是不同的。

但是,这又是一个错误的问题。

这是我在我的应用程序中使用,它很好

 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; } 

希望能帮助到你

我做了这个,它甚至显示你的型号:

 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);