Как проверить, разрешено ли пользователю местоположение для приложения mu?
Обычно я использовал бы метод authorizationStatus
класса CLLocationManager
, но он доступен только в iOS 4.2 и новее. Возможно ли это достичь, используя SDK 4.2, так что приложение все еще может работать на устройствах со старыми версиями iOS или мне нужно понизить SDK?
И по той же строке мне нужна аналогичная альтернатива для метода locationServicesEnabled
до iOS 4.0.
Как проверить, включены ли службы определения местоположения для определенного приложения до iOS 4.2?
Ответ 1
Когда вы вызываете -startUpdatingLocation
, если служба определения местоположения была отклонена пользователем, делегат менеджера местоположений получит вызов -locationManager:didFailWithError:
с кодом ошибки kCLErrorDenied
. Это работает как во всех версиях iOS.
Ответ 2
Я комбинировал два метода в коде ниже
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];
}
Ответ 3
Хм.. Я не думал использовать authorizationStatus
или locationServicesEnabled
. Я сделал следующее:
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.
Надеюсь, это поможет!