iPhone 5/5c/5s和iPod touch 5的设备代码(平台字符串)是什么?

22

我自9月12日起开始记录用户日志,看起来iPhone5,2比iPhone5,1更受欢迎。 - northtree
关于 iPhone 5S 和 5C 平台字符串,请参阅此帖子 https://dev59.com/DmMk5IYBdhLWcg3w6yHh#18900927 - Trung
对于 iPhone 6 和 iPhone 6 Plus,代码分别为:iPhone7,2 和 iPhone7,1。 - CReaTuS
使用此答案“https://dev59.com/H18e5IYBdhLWcg3wZ5ys#34542728”来检测所有已知的苹果设备。 - Vidhan Nandi
9个回答

35

您可以在这里找到所有iOS设备的标识符列表(包括iPhone 5型号和iPad mini):

http://theiphonewiki.com/wiki/index.php?title=Models

最新型号的标识符如下:

iPhone 5:iPhone5,1 和 iPhone5,2

iPhone 5C:iPhone5,3 和 iPhone5,4

iPhone 5S:iPhone6,1 和 iPhone6,2

iPhone 6:iPhone7,2

iPhone 6 Plus:iPhone7,1

iPhone 6S:iPhone8,1

iPhone 6S Plus:iPhone8,2

iPhone SE:iPhone8,4

iPhone 7:iPhone9,1 和 iPhone9,3

iPhone 7 Plus:iPhone9,2 和 iPhone9,4

iPhone 8:iPhone10,1 和 iPhone10,4

iPhone 8 Plus:iPhone10,2 和 iPhone10,5

iPhone X:iPhone10,3 和 iPhone10,6

编辑:我还制作了一个更新的iOS支持矩阵版本,其中包括所有iPhone X之前的型号。

http://dorianroy.com/blog/2017/11/iphone-x-added-to-ios-support-matrix/

仅提供链接的答案应该在回答中提供关键信息,以防链接失效。 - Sascha Wolf
好的,我已经在答案中添加了标识符。 - Dorian Roy

28
if ([platform isEqualToString:@"iPhone1,1"])    return @"iPhone 2G";
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:@"iPhone3,2"])    return @"iPhone 4";
if ([platform isEqualToString:@"iPhone3,3"])    return @"iPhone 4 (CDMA)";
if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (UK+Europe+Asia+China)";
if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (UK+Europe+Asia+China)";
if ([platform isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
if ([platform isEqualToString:@"iPhone7,2"])    return @"iPhone 6";

if ([platform isEqualToString:@"iPod1,1"])      return @"iPod Touch (1 Gen)";
if ([platform isEqualToString:@"iPod2,1"])      return @"iPod Touch (2 Gen)";
if ([platform isEqualToString:@"iPod3,1"])      return @"iPod Touch (3 Gen)";
if ([platform isEqualToString:@"iPod4,1"])      return @"iPod Touch (4 Gen)";
if ([platform isEqualToString:@"iPod5,1"])      return @"iPod Touch (5 Gen)";
if ([platform isEqualToString:@"iPod7,1"])      return @"iPod Touch (6 Gen)";

if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
if ([platform isEqualToString:@"iPad1,2"])      return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini";
if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,4"])      return @"iPad Mini 2 (WiFi)";
if ([platform isEqualToString:@"iPad4,5"])      return @"iPad Mini 2 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,6"])      return @"iPad Mini 2 (China)";
if ([platform isEqualToString:@"iPad4,7"])      return @"iPad Mini 3 (WiFi)";
if ([platform isEqualToString:@"iPad4,8"])      return @"iPad Mini 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,9"])      return @"iPad Mini 3 (China)";
if ([platform isEqualToString:@"iPad5,3"])      return @"iPad Air 2 (WiFi)";
if ([platform isEqualToString:@"iPad5,4"])      return @"iPad Air 2";

if ([platform isEqualToString:@"i386"])         return @"Simulator";
if ([platform isEqualToString:@"x86_64"])       return @"Simulator";

return platform;  

1
有没有在Github或类似的地方可以找到这个源代码,这样我就可以将其导入,而不必每次发布时都去寻找和更新? - Adam Shiemke
2
"Asis"? 你是指 "Asia" 吗? - Todd Lehman
请注意,这里的iPad3.6只是无害的重复。我使用以下代码:static NSDictionary* deviceNames; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ deviceNames = @{ @"i386" : @"iPhone 模拟器", @"x86_64" : @"iPhone 模拟器",...以及NSString* readableName = (NSString*)deviceNames[machineName]; - Gordon Dove
对于 iPhone 6 和 iPhone 6 Plus,代码分别为:iPhone7,2 和 iPhone7,1。 - CReaTuS

11

此方法适用于市场上的所有设备:

- (NSString *) platform{
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);
return platform; }

- (NSString *) platformString{
NSString *platform = [self 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:@"iPhone3,3"])    return @"Verizon iPhone 4";
if ([platform isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
if ([platform isEqualToString:@"iPhone5,1"])    return @"iPhone 5 (GSM)";
if ([platform isEqualToString:@"iPhone5,2"])    return @"iPhone 5 (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,3"])    return @"iPhone 5c (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone5,4"])    return @"iPhone 5c (UK+Europe+Asia+China)";
if ([platform isEqualToString:@"iPhone6,1"])    return @"iPhone 5s (GSM+CDMA)";
if ([platform isEqualToString:@"iPhone6,2"])    return @"iPhone 5s (UK+Europe+Asia+China)";
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:@"iPhone8,4"])    return @"iPhone SE";
if ([platform isEqualToString:@"iPhone9,1"])    return @"iPhone 7";
if ([platform isEqualToString:@"iPhone9,2"])    return @"iPhone 7 Plus";
if ([platform isEqualToString:@"iPhone9,3"])    return @"iPhone 7";
if ([platform isEqualToString:@"iPhone9,4"])    return @"iPhone 7 Plus";


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:@"iPod5,1"])      return @"iPod Touch 5G";

if ([platform isEqualToString:@"iPad1,1"])      return @"iPad";
if ([platform isEqualToString:@"iPad1,2"])      return @"iPad 3G";
if ([platform isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
if ([platform isEqualToString:@"iPad2,2"])      return @"iPad 2";
if ([platform isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
if ([platform isEqualToString:@"iPad2,4"])      return @"iPad 2";
if ([platform isEqualToString:@"iPad2,5"])      return @"iPad Mini (WiFi)";
if ([platform isEqualToString:@"iPad2,6"])      return @"iPad Mini";
if ([platform isEqualToString:@"iPad2,7"])      return @"iPad Mini (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,1"])      return @"iPad 3 (WiFi)";
if ([platform isEqualToString:@"iPad3,2"])      return @"iPad 3 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad3,3"])      return @"iPad 3";
if ([platform isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
if ([platform isEqualToString:@"iPad3,5"])      return @"iPad 4";
if ([platform isEqualToString:@"iPad3,6"])      return @"iPad 4 (GSM+CDMA)";
if ([platform isEqualToString:@"iPad4,1"])      return @"iPad Air (WiFi)";
if ([platform isEqualToString:@"iPad4,2"])      return @"iPad Air (Cellular)";
if ([platform isEqualToString:@"iPad4,4"])      return @"iPad Mini 2 (WiFi)";
if ([platform isEqualToString:@"iPad4,5"])      return @"iPad Mini 2 (Cellular)";
if ([platform isEqualToString:@"iPad4,6"])      return @"iPad Mini 2";
if ([platform isEqualToString:@"iPad4,7"])      return @"iPad Mini 3";
if ([platform isEqualToString:@"iPad4,8"])      return @"iPad Mini 3";
if ([platform isEqualToString:@"iPad4,9"])      return @"iPad Mini 3";
if ([platform isEqualToString:@"iPad5,3"])      return @"iPad Air 2";
if ([platform isEqualToString:@"iPad5,4"])      return @"iPad Air 2";


if ([platform isEqualToString:@"i386"])         return @"Simulator";
if ([platform isEqualToString:@"x86_64"])       return @"Simulator";
return platform; }

4
iPhone 6和iPhone 6 Plus的代码分别是:iPhone7,2和iPhone7,1。 - CReaTuS
你确定这段代码反映的是什么?例如,在之前的模型中,iPhone 5的6.1和6.2是指带有GSM和GSM + CDMA的iPhone 5。 - Pichirichi

4

是的,"iPhone5,1"是GSM iPhone 5,"iPhone5,2"是CDMA iPhone 5,"iPhone5,3"是GSM iPhone 5C,"iPhone5,4"是CDMA iPhone 5C,"iPhone6,1"是GSM iPhone 5S,而"iPhone6,2"是CDMA iPhone 5S。这回答了你的问题吗?


3

Verizon版的iPhone 5返回的是"iPhone5,2",而GSM版的则是"iPhone5,1"。


3
看起来是iPhone 5的型号可能是iPhone5,1或iPhone5,2,具体取决于型号。
来自知名iOS开发者@marcoarment:
iPhone5,1:型号A1428,适用于AT&T/加拿大
iPhone5,2:型号A1429,适用于其他地区
A1429 可能有两种模式,但我没有看到任何iPhone5,3记录。
来源:https://twitter.com/marcoarment/status/249249183029161984

1
我创建了一个用于在运行时检测设备的库。

它被称为SDVersion

希望有些人会发现它有用。


1
[更新]
iPhone10,1:iPhone 8
iPhone10,2:iPhone 8 Plus
iPhone10,3:iPhone X 全球版
iPhone10,4:iPhone 8
iPhone10,5:iPhone 8 Plus
iPhone10,6:iPhone X GSM 版
iPhone11,2:iPhone XS
iPhone11,4:iPhone XS Max
iPhone11,6:iPhone XS Max 全球版
iPhone11,8:iPhone XR
iPhone12,1:iPhone 11
iPhone12,3:iPhone 11 Pro
iPhone12,5:iPhone 11 Pro Max
iPhone12,8:iPhone SE 第二代

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接