如何检查iOS 4.2之前的特定应用是否启用位置服务?

我如何检查用户是否允许mu应用程序的位置? 通常我会使用CLLocationManager类的authorizationStatus方法,但它只适用于iOS 4.2及更高版本。 是否有可能以某种方式实现这一点,同时仍然使用SDK 4.2,以便应用程序仍然可以运行在具有较旧版本的iOS的设备上,还是必须降级SDK? 同样的,我需要iOS 4.0之前的locationServicesEnabled方法。

感谢名单

当您调用-startUpdatingLocation ,如果位置服务被用户拒绝,位置pipe理器委托将收到对-locationManager:didFailWithError:的调用-locationManager:didFailWithError:带有kCLErrorDenied错误代码。 这适用于所有版本的iOS。

我在下面的代码中结合了两种技术

  MKUserLocation *userLocation = map.userLocation; BOOL locationAllowed = [CLLocationManager locationServicesEnabled]; BOOL locationAvailable = userLocation.location!=nil; if (locationAllowed==NO) { 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]; } else { if (locationAvailable==NO) [self.map.userLocation addObserver:self forKeyPath:@"location" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil]; } 

嗯..我没有想到使用authorizationStatuslocationServicesEnabled 。 我所做的是以下几点:

 MKUserLocation *userLocation = mapView.userLocation; if (!userLocation.location) { 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]; return; } 

我很高兴看到有一个更好的方法来检查,但我没有遇到任何问题,我发现如果我的应用程序被允许使用GPS。

希望这可以帮助!