Objective c 如何检查iDevice中是否存在GPS芯片
我找不到一种方法来检查“设备中存在GPS芯片” 我想给用户一个提示,没有GPS的位置不如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.用户已
来自多云德国的问候语使用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我已经在我的应用程序中做到了。(如果做不到,那么正确的答案是“做不到”)顺便说一下,你上面评论中的链接显示了答案!