
隨便放的圖
問題描述
公司開發(fā)APP的時候,領(lǐng)導(dǎo)要求分析設(shè)備用戶量,即用iPhone5s的有多少,iPhone6s的有多少等等。這樣就需要在代碼中獲取設(shè)備的名稱
解決方案
從網(wǎng)上查找了些資料,基本上都是通過獲取到設(shè)備的產(chǎn)品類型來判斷設(shè)備名稱的。廢話不多說,直接上代碼了
導(dǎo)入頭文件 #include <sys/sysctl.h>
- (NSString *)getCurrentDeviceName
{
int mib[2];
size_t len;
char *machine;
mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
sysctl(mib, 2, NULL, &len, NULL, 0);
machine = malloc(len);
sysctl(mib, 2, machine, &len, NULL, 0);
NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding];
free(machine);
if ([platform isEqualToString:@"iPhone5,1"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"]) return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,3"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone5,4"]) return @"iPhone 5c";
if ([platform isEqualToString:@"iPhone6,1"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone6,2"]) return @"iPhone 5s";
if ([platform isEqualToString:@"iPhone7,1"]) return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone7,2"]) return @"iPhone 6";
if ([platform isEqualToString:@"iPhone8,1"]) return @"iPhone 6s";
if ([platform isEqualToString:@"iPhone8,2"]) return @"iPhone 6s Plus";
if ([platform isEqualToString:@"i386"]) return @"iPhone Simulator";
if ([platform isEqualToString:@"x86_64"]) return @"iPhone Simulator";
return platform;
}
附錄
| 產(chǎn)品類型 | 設(shè)備名稱 |
|---|---|
| iPhone1,2 | iPhone 3G |
| iPhone2,1 | iPhone 3GS |
| iPhone3,1 | iPhone 4 |
| iPhone3,2 | iPhone 4 |
| iPhone3,3 | iPhone 4 |
| iPhone4,1 | iPhone 4s |
| iPhone5,1 | iPhone 5 |
| iPhone5,2 | iPhone 5 |
| iPhone5,3 | iPhone 5c |
| iPhone5,4 | iPhone 5c |
| iPhone6,1 | iPhone 5s |
| iPhone6,2 | iPhone 5s |
| iPhone7,1 | iPhone 6 Plus |
| iPhone7,2 | iPhone 6 |
| iPhone8,1 | iPhone 6s |
| iPhone8,2 | iPhone 6s Plus |
| iPhone8,4 | iPhone SE |
注: iPhone 6/6Plus 和 iPhone 6s/6sPlus的產(chǎn)品類型要注意分別
更多產(chǎn)品類型對應(yīng)的設(shè)備名稱請參考http://www.i4.cn/firmware.html