app开发中 有时候时候需要读取手机的信息 比如说微博 当我们发微博的时候 需要显示发送微博设备的型号,比如说iphone 5s
这个时候 我们需要一个方法来获取设备的信息
在oc自带的方法中 有相关的方法 可以获取设备有相关信息 但这些结果往往不是我们想要的 比如说他可以获取设备名:
[UIDevice currentDevice].name : “晓牛”的 iPhone
[UIDevice currentDevice].model : iPhone
[UIDevice currentDevice].systemName : iPhone OS
[UIDevice currentDevice].localizedModel : iPhone
[UIDevice currentDevice].identifierForVendor : <__NSConcreteUUID 0xc30c6f0> 42CD46F3-D8A1-42D0-9243-F05F8B8CCB5D
[UIDevice currentDevice].systemVersion : 9.3.1
[UIDevice currentDevice].identifierForVendor : <__NSConcreteUUID 0xc30c7a0> 42CD46F3-D8A1-42D0-9243-F05F8B8CCB5D
这时候我们也可以通过一些方法去获得设备的设备版本 从而通过硬编码的方式获取设备型号:
/** * 设备版本 * * @return e.g. iPhone 5S */ + (NSString*)deviceVersion { // 需要#import "sys/utsname.h" struct utsname systemInfo; uname(&systemInfo); NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding]; //iPhone if ([deviceString isEqualToString:@"iPhone1,1"]) return @"iPhone 1G"; if ([deviceString isEqualToString:@"iPhone1,2"]) return @"iPhone 3G"; if ([deviceString isEqualToString:@"iPhone2,1"]) return @"iPhone 3GS"; if ([deviceString isEqualToString:@"iPhone3,1"]) return @"iPhone 4"; if ([deviceString isEqualToString:@"iPhone3,2"]) return @"Verizon iPhone 4"; if ([deviceString isEqualToString:@"iPhone4,1"]) return @"iPhone 4S"; if ([deviceString isEqualToString:@"iPhone5,1"]) return @"iPhone 5"; if ([deviceString isEqualToString:@"iPhone5,2"]) return @"iPhone 5"; if ([deviceString isEqualToString:@"iPhone5,3"]) return @"iPhone 5C"; if ([deviceString isEqualToString:@"iPhone5,4"]) return @"iPhone 5C"; if ([deviceString isEqualToString:@"iPhone6,1"]) return @"iPhone 5S"; if ([deviceString isEqualToString:@"iPhone6,2"]) return @"iPhone 5S"; if ([deviceString isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus"; if ([deviceString isEqualToString:@"iPhone7,2"]) return @"iPhone 6"; if ([deviceString isEqualToString:@"iPhone8,1"]) return @"iPhone 6s"; if ([deviceString isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus"; //iPod if ([deviceString isEqualToString:@"iPod1,1"]) return @"iPod Touch 1G"; if ([deviceString isEqualToString:@"iPod2,1"]) return @"iPod Touch 2G"; if ([deviceString isEqualToString:@"iPod3,1"]) return @"iPod Touch 3G"; if ([deviceString isEqualToString:@"iPod4,1"]) return @"iPod Touch 4G"; if ([deviceString isEqualToString:@"iPod5,1"]) return @"iPod Touch 5G"; //iPad if ([deviceString isEqualToString:@"iPad1,1"]) return @"iPad"; if ([deviceString isEqualToString:@"iPad2,1"]) return @"iPad 2 (WiFi)"; if ([deviceString isEqualToString:@"iPad2,2"]) return @"iPad 2 (GSM)"; if ([deviceString isEqualToString:@"iPad2,3"]) return @"iPad 2 (CDMA)"; if ([deviceString isEqualToString:@"iPad2,4"]) return @"iPad 2 (32nm)"; if ([deviceString isEqualToString:@"iPad2,5"]) return @"iPad mini (WiFi)"; if ([deviceString isEqualToString:@"iPad2,6"]) return @"iPad mini (GSM)"; if ([deviceString isEqualToString:@"iPad2,7"]) return @"iPad mini (CDMA)"; if ([deviceString isEqualToString:@"iPad3,1"]) return @"iPad 3(WiFi)"; if ([deviceString isEqualToString:@"iPad3,2"]) return @"iPad 3(CDMA)"; if ([deviceString isEqualToString:@"iPad3,3"]) return @"iPad 3(4G)"; if ([deviceString isEqualToString:@"iPad3,4"]) return @"iPad 4 (WiFi)"; if ([deviceString isEqualToString:@"iPad3,5"]) return @"iPad 4 (4G)"; if ([deviceString isEqualToString:@"iPad3,6"]) return @"iPad 4 (CDMA)"; if ([deviceString isEqualToString:@"iPad4,1"]) return @"iPad Air"; if ([deviceString isEqualToString:@"iPad4,2"]) return @"iPad Air"; if ([deviceString isEqualToString:@"iPad4,3"]) return @"iPad Air"; if ([deviceString isEqualToString:@"iPad5,3"]) return @"iPad Air 2"; if ([deviceString isEqualToString:@"iPad5,4"]) return @"iPad Air 2"; if ([deviceString isEqualToString:@"i386"]) return @"Simulator"; if ([deviceString isEqualToString:@"x86_64"]) return @"Simulator"; if ([deviceString isEqualToString:@"iPad4,4"] ||[deviceString isEqualToString:@"iPad4,5"] ||[deviceString isEqualToString:@"iPad4,6"]) return @"iPad mini 2"; if ([deviceString isEqualToString:@"iPad4,7"] ||[deviceString isEqualToString:@"iPad4,8"] ||[deviceString isEqualToString:@"iPad4,9"]) return @"iPad mini 3"; return deviceString; }
有一个比较好用的第三方工具:github 其实它的本质也是上面的方法 只不过进行了封装
直接调用方法就可以获取设备的型号和名称 比较简单
NSLog(@"Device Display Name: %@", [[UIDevice currentDevice] displayName]); NSLog(@"Device Display Model Name: %@", [[UIDevice currentDevice] displayModelName]);
随着iphone种类越来越多 以上的设备版本 需要及时更新 : 具体最新的版本设备可以通过以下网站查看 从而更新代码:
https://www.theiphonewiki.com/wiki/Models