Как я могу отключить функцию определения местоположения для моего приложения?
Недавно IOS4 представила возможность включить/отключить службы определения местоположения для конкретного приложения.
Мне нужно определить, включено ли это включено/отключено для моего приложения.
Первый Я пробовал:
if ([CLLocationManager locationServicesEnabled])
{
....
}
однако это относится к глобальной службе определения местоположения, а не к конкретному параметру приложения.
Второй Я пытался использовать
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
...
}
Он работает, но он вызван как при отключении приложения сервисного приложения, так и в других случаях, например, если по каким-то причинам мера не работает.
Мне нужен код, чтобы определить, разрешено ли MY-приложению использовать службы определения местоположения.
Как я могу достичь этого?
Спасибо за поддержку
Ответы
Ответ 1
Из документации для locationManager: didFailWithError:
Если пользователь отклоняет ваши приложения использование службы определения местоположения, это метод сообщает об ошибке kCLErrorDenied. Получив такую ошибку, вы должен остановить службу определения местоположения.
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
if ([[error domain] isEqualToString: kCLErrorDomain] && [error code] == kCLErrorDenied) {
// The user denied your app access to location information.
}
}
Вы можете найти другие коды ошибок здесь.
Ответ 2
Я предпочитаю использовать
-(BOOL)locationAuthorized {
return ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized);
}
над свойством locationServicesEnabled, поскольку оно относится к уровню телефона, а не к вашему приложению.
Ответ 3
В соответствии с Apple docs на CLLocationManager существует свойство + (BOOL)locationServicesEnabled
, которое должно сделать именно это.