Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测iphonev。使用objc的iphone3g_Iphone_Objective C - Fatal编程技术网

如何检测iphonev。使用objc的iphone3g

如何检测iphonev。使用objc的iphone3g,iphone,objective-c,Iphone,Objective C,该设备有一个model属性,但它没有区分iPhone和iPhone 3G。有更好的方法吗?请参见此处: 斯蒂芬发布的项目中特别有趣的部分如下: 您可能会看到的字符串值: /* Platforms iPhone1,1 -> iPhone 1G iPhone1,2 -> iPhone 3G iPod1,1 -> iPod touch 1G iPod2,1 -> iPod touch 2G */ 如何获取其中一个值: size_t size; sysc

该设备有一个model属性,但它没有区分iPhone和iPhone 3G。有更好的方法吗?

请参见此处:


斯蒂芬发布的项目中特别有趣的部分如下:

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

/*
 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(项目作者)至少有一些关于iPhone开发的优秀文章,并且至少有一本关于iPhone开发的书。

看起来您可能试图解决错误的问题。你真的不想知道你是在iphone3g上运行还是在原装iPhone上运行。如果你编写的代码试图根据其型号推断该设备是否有GPS硬件,那么当新型号出现时,你就必须对其进行更改(比如带GPS的iPod Touch,或带GPS的新上网本产品,或不带GPS的iPhone 3G Nano)


从你的描述中不清楚为什么你认为你需要关心设备是否有GPS硬件。您可以从CoreLocation获取位置信息,其中包括精度测量。只需使用该代码,如果精度不够高,请通知用户。

实际上,他们可以使用该代码来检测一个没有的模型,并假设所有其他模型都有该代码

这样一来,他们就不必在将来更改代码,除非他们推出的iPhone再也没有GPS了


此外,作为对俄勒冈州Ghost的回应,SDK无法检测到许多功能(蓝牙是我脑海中的另一个功能)…

为什么要这样做?为了了解某个功能的存在,您不应该检查您在哪个平台上,而应该检查该功能的存在。为您在将来避免一些兼容性噩梦。如果你因为功能检查而不想这样做,你可以忽略这个评论:)如果没有GPS功能,我想限制应用程序的GPS功能。所有手机都有定位服务,您可以设置所需的准确度,但无法判断您是否只能使用手机定位服务或GPS。我也在想同样的事情,尽管正如OregonGhost所说,使用API报告的错误半径可能更好。如果你看不到足够多的卫星,即使是卫星GPS也能给你一个很大的半径。有时候,旧的iPhone如果碰巧看到一个好的WAP,它们的位置会很紧。