【发布时间】:2010-10-21 20:26:23
【问题描述】:
虽然在您的应用程序中查找和使用这些信息并不是一个好习惯,但有没有办法找到您拥有的 iPhone / iPod / iPad 型号。例如:2G/3GS/4G等
【问题讨论】:
标签: iphone
虽然在您的应用程序中查找和使用这些信息并不是一个好习惯,但有没有办法找到您拥有的 iPhone / iPod / iPad 型号。例如:2G/3GS/4G等
【问题讨论】:
标签: iphone
试试:
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。如何申报?
我认为这里已经回答了这个问题:Determine device (iPhone, iPod Touch) with iPhone SDK,虽然我已经添加了一点:
- (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,例如,specs for iPhone 4 以获取平台字符串。
【讨论】:
iPhone3,2?
-[UIDevice model],但我不确定它是否返回比“iPhone”或“iPod Touch”更具体的内容。
【讨论】:
我认为 iTunes/Xcode Organizer 出于某种原因已经这样做了(至少我似乎记得它正确地将我的旧 iPod Touch 识别为第一代),但我的 iPhone 3GS 绝对不是这种情况。 iPhone 配置实用程序也没有帮助。
所以我启动了 System Profiler 以查看该设备是否出现在 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 -
【讨论】: