问题 如何判断iOS设备是否有GPS?


对于iPad或iPod touch,有没有办法找出该设备是否有GPS?

额外信用:如果iPad本身没有,但它连接到第三方GPS设备怎么办?我可以确定吗?


10631
2017-08-21 23:00


起源

您可能想看看这个SO答案是否解决了您的问题: stackoverflow.com/questions/6907584/... - pythonquick
除iPhone 2G外,不是所有iOS设备都有GPS吗? - darksky
@Nayefc:不,iPod Touch(迄今为止的所有型号)都没有GPS。 - Adam Rosenfield
啊对啊..我多么愚蠢。 - darksky
没有蜂窝支持的iPad / iTouch设备没有GPS。 - Brad


答案:


对于iOS 6或更高版本,您可能想尝试一下

+ (BOOL)[CLLocationManager deferredLocationUpdatesAvailable]

根据 文件

延期位置更新需要GPS硬件,并且可能并非所有iOS设备都支持。


5
2018-01-21 11:12



聪明 - 谢谢! ;-) - Brad
有些设备有GPS和deferredLocationUpdatesAvailable返回NO。所以这不适用于所有设备。 - Francesco verheye
@Francescoverheye你知道这些通常是运行<iOS 8的旧设备吗? - Warpling
@Warpling据我所知,这与iOS版本和设备的年龄无关。 - Francesco verheye
CLLocationManager.deferredLocationUpdatesAvailable()始终为iOS 10返回false。 - Anshu


如果设备具有GPS功能,Apple不提供直接查询设备的功能。您的问题有两种可能的解决方案:

  1. 查询设备类型并根据其确定是否具有GPS。这是描述的 这里

  2. Apple建议的方式:查看他们的文档 这里 (“确定可用的硬件支持”部分)。基本上,您创建一个CLLocationManager实例并将所需的精度设置为最高级别,之后您可以查询其准确性;如果它不是很准确,那么该设备很可能没有GPS。

希望这可以帮助。 :)


10
2017-08-21 23:17



不是我“想要”的答案 - 但它是正确的,但是;-) - Brad
答案#2下的链接不再起作用。 - Tafsen


只有GPS可以提供​​位置属性:课程和速度。
作为一般规则,您需要GPS才能获得精确定位,设备输出GPS将会提供一个位置高于30-40米的位置.HeicontalAccuracy()。 (使用精度设置 CLLLocationAccuracyBest

因此,在这种情况下,你没有一个准确的位置,可以永远忽略它。 (如果设备有GPS,则为独立网络)


1
2018-02-13 22:41





下载高度计或类似的应用程序。在使用下载的应用程序之前,请关闭单元格数据和wifi。然后启动应用程序,看看它是否会为您提供当前的海拔高度。如果它工作,你有GPS,如果它没有,那么你没有


0
2017-11-29 02:53



哈哈真好笑。认为你误解了这个问题。 - Christoffer
我会低估答案(如上所述) - 然而,查看返回的“海拔”字段的想法是一个不错的主意。 - Brad