我想确定安装我的应用程序的设备.这意味着,当我在iPhone上安装应用程序时,它应该告诉我设备信息.信息就像,设备是2G,3G或3GS.
目前我只获得设备的型号,名称,systemName,systemVersion.
我想知道该设备是2G,3G或3GS.
请帮我.
在过去的Mac编程历史中,这一直被认为是错误的问题.
您真正需要知道的是更具体的信息.为代码中的每个行为决策提出一个更狭隘的问题.例如,您可能需要知道设备是否具有GPS.另一个原因是你不应该根据它是什么型号设备来决定如何使用OpenGL堆栈,而是根据提供的OpenGL功能/扩展信息来决定.
您现在获得的信息来自UIDevice,这是一个设计不佳的API.它以最糟糕的格式为您提供完全错误的信息 - 字符串.
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; }
希望能帮助到你