如何使用Obj C检测iPhone v iPhone 3G

该设备有一个模型属性,但它不区分iPhone和iPhone 3G。 有没有更好的办法?


Stephan发布的项目中特别有趣的部分是这些:

您可能会看到的字符串值:

/*
 Platforms
 iPhone1,1 -> iPhone 1G
 iPhone1,2 -> iPhone 3G 
 iPod1,1   -> iPod touch 1G 
 iPod2,1   -> iPod touch 2G 
*/

如何获得这些值之一:

size_t size;
sysctlbyname("hw.machine", NULL, &size, NULL, 0);
char *machine = malloc(size);
sysctlbyname("hw.machine", machine, &size, NULL, 0);

NSString *platform = [NSString stringWithCString:machine encoding: NSUTF8StringEncoding];

free(machine);

然后,您可以检查@"iPhone"@"iPod"的平台开头,并告诉您是否有带GPS的设备。 我不建议为所需的内容匹配整个字符串,因为下一次出现设备时(比如今年夏天,很可能),您将无法在不更改代码的情况下匹配它。

另外,如果你还没有看到他们,Erica Sadun(项目作者)在ArsTechnica.com上有一些关于iPhone开发的优秀文章,至少有一本关于它的书。


看这里:

ars / uidevice-extension


看起来你可能试图在这里解决错误的问题。 你真的不想知道你是在iPhone 3G还是原装iPhone上运行。 如果您编写的代码试图根据其型号推断设备是否具有GPS硬件,那么在出现新模型时(例如带有GPS的iPod Touch或具有GPS的新上网本产品),您将不得不更改它,或者没有GPS的iPhone 3G Nano)。

从描述中不清楚为什么您认为您需要关心设备是否具有GPS硬件。 您可以从CoreLocation获取位置信息,并包含准确性度量。 只要使用它,如果精度不够高,请通知用户。

链接地址: http://www.djcxy.com/p/50357.html

上一篇: How do you detect iPhone v. iPhone 3G using Obj C

下一篇: How to detect pressing Enter on keyboard using jQuery?