Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.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
Objective c 如何检查iDevice中是否存在GPS芯片_Objective C_Gps_Cllocation - Fatal编程技术网

Objective c 如何检查iDevice中是否存在GPS芯片

Objective c 如何检查iDevice中是否存在GPS芯片,objective-c,gps,cllocation,Objective C,Gps,Cllocation,我找不到一种方法来检查“设备中存在GPS芯片” 我想给用户一个提示,没有GPS的位置不如GPS的准确 来自多云德国的问候语使用CLLocationManager中的locationServicesEnabled方法 该设备是否有Gps芯片。如果不是,给用户的提示并不总是有用的,用户将不得不购买一部新手机来解决这种情况 然而,拥有这些信息还有许多其他原因 您必须区分以下两种情况: 1.设备没有Gps 2.当前位置不是由GPS提供的,而是通过备用位置提供商提供的。(手机发射塔/wifi) 3.用户已

我找不到一种方法来检查“设备中存在GPS芯片”

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


来自多云德国的问候语使用CLLocationManager中的locationServicesEnabled方法


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

然而,拥有这些信息还有许多其他原因

您必须区分以下两种情况:
1.设备没有Gps
2.当前位置不是由GPS提供的,而是通过备用位置提供商提供的。(手机发射塔/wifi)
3.用户已禁用应用程序的位置传递。

您的问题是主题1:
这可以通过获取当前设备型号L(通过机器名称)来解决,然后查找型号L,并列出您自己拥有gps的设备。查看用户boxel在中的帖子,展示技术

然而,这不是未来的证明,只适用于已知的模型,通常不太推荐

或者你在应用程序的plist文件中声明你需要一个带有Gps的设备,那么它将只安装到这些设备上

2) 您可以查看当前的速度和航向,如果有效,这仅由GPS提供或设备不移动。(然后您可以查找水平重心<30m)

3) 被anirudcc的帖子回复了

你可以使用具有功能的类别

-(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  
            }
}
//使用类加载器避免在iPhone OS 3.x上崩溃
id netInfo=[[NSClassFromString(@“CTTelephonyNetworkInfo”)alloc]init];
如果(网络信息)
{
id载体=[netInfo subscriberCellularProvider];
如果([[carrier carrierName]长度]没有3G和真正的GPS
}
}

第二个解决方案的来源:

这并不能说明是否使用了Gps或蜂窝塔/wifi定位。SDK无法检测Gps硬件。请参考此答案,这是可以做到的,但您无法做到。请查看我的答案。您可以获得机器名,并从中创建一个列表,列出哪些设备具有Gps。您需要相同的技术n我已经在我的应用程序中做到了。(如果做不到,那么正确的答案是“做不到”)顺便说一下,你上面评论中的链接显示了答案!