如何检查位置服务是否打开?

时间:2011-02-06 15:57:49

标签: iphone service location

如何检查用户是否已关闭位置服务?

这样我就可以提示他/她打开它以使用我的应用程序。

谢谢!

4 个答案:

答案 0 :(得分:13)

CLLocationManager提供了确定位置服务可用性的类方法:

- (BOOL)locationServicesEnabled (for < iOS 4.0)

+ (BOOL)locationServicesEnabled (for iOS 4.0 and greater)

+ (CLAuthorizationStatus)authorizationStatus (for iOS 4.2+)

(和其他人一样,见文件)

答案 1 :(得分:3)

如果您的应用程序绝对无法在没有位置服务的情况下运行,那么您可以使用应用程序的Info.plist将位置服务作为安装/运行应用程序的要求。您可以通过将UIDeviceCapabilities键添加到应用程序的Info.plist并为其提供相应的“location-services”值减去引号来实现此目的。

使用这种方式配置Info.plist,如果关闭了位置服务,或者设备处于飞行模式,或者其他任何东西阻止在设备上使用位置服务,iOS将提示用户打开应用程序打开时的位置服务。

编辑:简短的实验似乎表明iOS在这种情况下不会提示用户,所以这对你来说不是一个好的解决方案。

有关详细信息,请查看Apple开发人员文档的“信息属性列表主要参考”部分。

答案 2 :(得分:1)

使用以下代码...

  if (![CLLocationManager locationServicesEnabled]) {


    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Location Service Disabled"
                                                    message:@"To re-enable, please go to Settings and turn on Location Service for this app."
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];

}

答案 3 :(得分:0)

使用以下代码,即使在iOS 8中也可以使用。

if([CLLocationManager locationServicesEnabled]&&
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
  //...Location service is enabled
}
else
{
 //...Location service is disabled
}