Подтвердить что ты не робот

Как я могу отключить функцию определения местоположения для моего приложения?

Недавно IOS4 представила возможность включить/отключить службы определения местоположения для конкретного приложения.

Мне нужно определить, включено ли это включено/отключено для моего приложения.

Первый Я пробовал:

if ([CLLocationManager locationServicesEnabled])
    {
       ....
    } 

однако это относится к глобальной службе определения местоположения, а не к конкретному параметру приложения.

Второй Я пытался использовать

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{
   ...
} 

Он работает, но он вызван как при отключении приложения сервисного приложения, так и в других случаях, например, если по каким-то причинам мера не работает.

Мне нужен код, чтобы определить, разрешено ли MY-приложению использовать службы определения местоположения.

Как я могу достичь этого?

Спасибо за поддержку

4b9b3361

Ответ 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, которое должно сделать именно это.