check for locationServicesEnabled всегда возвращает YES, независимо от ручного переключателя, чтобы определить, включены ли службы определения местоположения - PullRequest
7 голосов
/ 02 сентября 2011
location = [[CLLocationManager alloc] init];
    location.desiredAccuracy = kCLLocationAccuracyBestForNavigation ;
    location.distanceFilter = 10 ;
    location.delegate=self;



    locationEnabledBool = [CLLocationManager locationServicesEnabled];

    if (locationEnabledBool ==NO) {
        UIAlertView *locationAlert = [[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];
        [locationAlert show];
        [locationAlert release];

    }
    else
        [location startUpdatingLocation];

Значение locationEnabledBool всегда равно YES, независимо от того, включены ли службы определения местоположения. Может ли тело помочь?

Ответы [ 2 ]

11 голосов
/ 03 сентября 2011

вместо

if (locationEnabledBool == NO) {
    //give error message
}

попробуй

if ( [CLLocationManager locationServicesEnabled] ==NO || [CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) {
    //give error message
}

Я нашел это по ссылке.

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

0 голосов
/ 02 сентября 2011

Когда вы тестируете этот код, вам нужно убедиться, что вы тестируете его на устройстве, а не только с помощью симулятора iOS.

Кроме того, я предлагаю вам дважды проверить в Настройках на этом устройстве, чтобы убедиться, что Службы определения местоположения на первой странице настроек говорит: Выкл. .

...