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

Проверка служб местоположения iOS

У меня есть представление с картой и кнопкой (например, приложение "Карты" ), которая позволяет пользователю центрировать и масштабировать свое текущее местоположение на карте. Если я не могу использовать метод locationServicesEnabled (всегда возвращает YES), должен ли я создать атрибут BOOL, чтобы проверить, вызван ли метод didFailWithError, и узнать, могу ли я вызвать метод кнопки?

Спасибо за чтение.

Отредактировано:

Этот код не работает для меня. Я использую симулятор. Я всегда получаю ДА при запросе locationServicesEnabled.

// Gets the user present location.
- (IBAction)locateUser:(id)sender {

    if([CLLocationManager locationServicesEnabled]) {

        CLLocationCoordinate2D coordinate;

        coordinate.latitude = self.mapView.userLocation.location.coordinate.latitude;
        coordinate.longitude = self.mapView.userLocation.location.coordinate.longitude;

        [self zoomCoordinate:coordinate];
    } else {
        [[[[UIAlertView alloc] initWithTitle:@"Warning." message:@"Location services are disabled." 
                                    delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease] show];     
    }
}
4b9b3361

Ответ 1

В настройках у вас есть два варианта отключения служб определения местоположения. Первый вариант - это глобальный переключатель для отключения службы определения местоположения для всех приложений "[CLLocationManager locationServicesEnabled]". Второй вариант позволяет отключить службу определения местоположения для некоторых приложений, но не для всех приложений.

Чтобы проверить, отключено ли его глобально, и если его отключено для вашего приложения, используйте следующее:

if([CLLocationManager locationServicesEnabled] && 
   [CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
...
}

Ответ 3

Я тоже сталкиваюсь с этой проблемой и все еще нахожу ответ.

заботиться о том, что authorizationStatus требует iOS4.2 + и + (BOOL) locationServicesEnabled требует iOS4.0... И для предыдущих версий iOS это - (BOOL) locationServicesEnabled...

Ответ 4

- (BOOL) enableLocationServices
{

    if ([CLLocationManager locationServicesEnabled])
    {
        self.locationManager.distanceFilter = 10;
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        [self.locationManager startUpdatingLocation];
        [self.mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
        return YES;
    }
    else
    {
        return NO;
    }
}