如何检查用户是否已关闭位置服务?
这样我就可以提示他/她打开它以使用我的应用程序。
谢谢!
答案 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
}