如何检查 iDevice 中是不是存在 GPS 芯片

Posted

技术标签:

【中文标题】如何检查 iDevice 中是不是存在 GPS 芯片【英文标题】:how to check GPS-Chip exists in a iDevice如何检查 iDevice 中是否存在 GPS 芯片 【发布时间】:2013-06-03 09:12:01 【问题描述】:

我找不到检查“iDevice 中存在 GPS 芯片”的方法

我想给用户一个提示,没有 GPS 的位置不如使用 GPS 准确

来自多云的德国的问候

【问题讨论】:

【参考方案1】:

设备是否有 Gps 芯片。如果没有,给用户的提示并不总是有帮助,用户将不得不购买一部新手机来解决这种情况。

但是,获得该信息还有许多其他原因。

你必须区分: 1.设备没有Gps 2. 当前位置不是通过 GPS 提供的,而是通过备用定位提供商提供的。 (手机信号塔/wifi) 3. 用户已为您的应用禁用位置传送。

您的问题是主题 1: 这可以通过获取当前设备型号(通过机器名称)来解决,然后查找型号,并制作您自己的设备具有 gps 的列表。查看来自detect ipad mini 的用户boxel 的帖子以显示技术。

但是,这不是未来的证明,仅适用于已知模型,一般不推荐。

或者您在应用的 plist 文件中声明您需要一个带 Gps 的设备,那么它只会安装到此类设备上。

2) 您可以查看当前速度和路线,如果有效,则仅由 GPS 提供或设备未移动。 (然后您可以查看水平精度

3) 由 anirudcc 的帖子回答

【讨论】:

【参考方案2】:

你可以使用this这个有功能的分类

-(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

【讨论】:

【参考方案3】:

使用 CLLocationManager 中的 locationServicesEnabled 方法

http://developer.apple.com/library/ios/#documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/occ/clm/CLLocationManager/locationServicesEnabled

【讨论】:

这并不能说明是否使用了 Gps 或手机信号塔/wifi 定位。 SDK 无法检测到 GPS 硬件。请参考这个答案***.com/questions/2004689/… 可以,但不能。看看我的回答。您可以获取机器名称,然后从那里为自己创建一个具有 Gps 的设备列表。您需要相同的技术来检测 iPad mini。我已经在我的应用程序中做到了。 (如果无法完成,那么正确的答案是“无法完成”) 顺便说一句,您上面评论中的链接显示了答案!

以上是关于如何检查 iDevice 中是不是存在 GPS 芯片的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我是不是在 android 4.4 及更高版本中以编程方式打开了 gps? [复制]

如何使用 Ionic2(地理定位)检查 GPS 是不是启用?

iOS - 如何检测电源是不是连接到 iDevice 广告正在充电

我如何检查用户是不是真的在他的手机上启用了 android 中的 gps 位置

android,检查gps位置是不是接近/接近某个位置

检查是不是在android中启用了GPS