查找iPhone型号信息

6

虽然在应用程序中查找和使用此信息不是良好的实践,但是否有办法找到您拥有的iPhone / iPod / iPad的型号。例如:2G/3GS/4G等

4个回答

7

尝试:

char    deviceString[256];
size_t  size = 255;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
if (size > 255) { size = 255; }
sysctlbyname("hw.machine", deviceString, &size, NULL, 0);
if (strcmp(deviceString,"iPhone1,1") == 0) { etc... }  // 2G

1,2是一款3G手机, 2,1是一款3GS手机, 3,1是一款i4手机,等等。


我尝试了这个,出现了'sysctlbyname' was not declared in this scope的错误。我该如何声明它? - ingh.am
1
请将以下文本添加到相应的.h文件中:#include <sys/sysctl.h> - hotpaw2
谢谢。您能以同样的方式找到iPod/Pad吗? - ingh.am
iPad1,1等等,这些设备名称列表可以在网上找到。或者您也可以从自己的设备中获取它们。 - hotpaw2
是的,我使用了固件下载列表。它们的命名方式相同!谢谢 :) - ingh.am

6

我认为这个问题已经在这里得到了回答:使用iPhone SDK确定设备(iPhone、iPod Touch),不过我稍微补充了一点:

- (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:@"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:@"i386"])   return @"iPhone Simulator";
return platform;

为了适应家庭的最新成员,您可以查看everyipod.com,例如iPhone 4规格以获取平台字符串。


@westsider iPhone 4GS是否具有平台字符串“iPhone3,2”? - Besi
我不能确定,但上述网站称iPhone 4S(不是GS)的平台字符串为iPhone 4,1。请参见:http://www.everymac.com/systems/apple/iphone/specs/apple-iphone-4s-specs.html HTH。 - westsider

1

-[UIDevice model],但我不确定它是否返回比“iPhone”或“iPod Touch”更具体的内容。


1

我曾经以为iTunes/Xcode Organizer已经可以做到这一点了(至少我记得它能正确识别我的旧iPod Touch为第一代),但对于我的iPhone 3GS来说显然不是这样。iPhone配置实用程序也没有帮助。

所以我启动了系统信息查看设备是否出现在USB列表中,结果它确实出现了。它还显示了“产品ID”(在我的情况下是0x1294)。我将其输入谷歌搜索,找到了以下内容:

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

设备ID 看起来它使用不同的设备ID: iPhone - 0x1290 iPod touch - 0x1291 iPhone 3G - 0x1292 iPod touch 2G - 0x1293 iPhone 3GS - 0x1294 iPod touch 3G - 0x1299 iPad - 0x129a iPhone 4 - iPod touch 4G - 0x129e Apple TV 2G -

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