如何使用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