我找不到检查“iDevice 中存在 GPS 芯片”的方法
我想给用户一个提示,没有 GPS 的位置不如 GPS 准确
来自多云的德国的问候
您可以使用具有功能的此类别
-(BOOL) supportsCapability: (NSString *) capability;
BOOL hasGPS = [UIDevice supportsCapability:UIDeviceGPSCapability];
我希望它有所帮助。
或者这也有效:
//Use classLoaders to avoid crashes on iPhone OS 3.x
id netInfo = [[NSClassFromString(@"CTTelephonyNetworkInfo") alloc] init];
if (netInfo)
{
id carrier = [netInfo subscriberCellularProvider];
if ([[carrier carrierName] length] <=0)
{
//NO operator=>NO 3G and no real GPS
}
}
第二种解决方案的来源:Detect GPS Hardware in iphone
该设备是否具有 Gps 芯片。如果没有,对用户的提示并不总是有帮助,用户将不得不购买新手机来解决这种情况。
然而,拥有这些信息还有许多其他原因。
您必须区分:
1. 设备没有 Gps
2. 当前位置不是由 GPS 提供的,而是通过备用定位提供商提供的。(手机信号塔/ wifi)
3. 用户为您的应用禁用了位置传送功能。
您的问题是主题 1:
这可以通过获取当前设备型号(通过机器名称)来解决,然后查找型号,并列出您自己的设备具有 gps 的列表。在检测 ipad mini中查看用户 boxel 的帖子以显示技术。
然而,这不是未来的证明,仅适用于已知模型,一般不推荐。
或者您在应用程序的 plist 文件中声明您需要一个带 Gps 的设备,那么它只会安装到此类设备上。
2)您可以查看当前的速度和路线,如果有效,这仅由 GPS 提供或设备没有移动。(然后您可以查看水平精度 < 30m)。
3) 由 anirudcc 的帖子回答
使用 CLLocationManager 中的 locationServicesEnabled 方法