2015-03-28 2 views
4

У меня проблема с получением моего текущего местоположения. Я все еще получаю ошибку:iOS 8 - Не удается получить текущее местоположение, Error Domain = kCLErrorDomain Code = 0

Error Domain=kCLErrorDomain Code=0 "The operation couldn’t be completed. (kCLErrorDomain error 0.)" 

Я уже сделал все, что я нашел здесь: содержание Сбросить

и настройки IOS Simulator (карта применения в симуляторе показывает правильное расположение).
В Xcode at Product> Scheme> Edit I unmarked Разрешить моделирование местоположения (когда я его маркирую, он имитирует, например, Лондон).
Я добавил NSLocationWhenInUseUsageDescription в файл Info.plist в моем проекте (приложение запрашивает разрешения на размещение, и я могу видеть их в настройках в iOS-симуляторе).
У меня включено подключение Wi-Fi (как, например, я сказал, что службы определения местоположения отлично работают в Safari, Maps или даже Maps в iOS Simulator).

-(void)viewDidLoad { 
     [super viewDidLoad]; 
     self.locationManager = [[CLLocationManager alloc] init]; 

     self.locationManager.delegate = self; 
     if(IS_OS_8_OR_LATER){ 
      NSUInteger code = [CLLocationManager authorizationStatus]; 
      if (code == kCLAuthorizationStatusNotDetermined && ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)])) { 

       if([[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSLocationWhenInUseUsageDescription"]) { 
        [self.locationManager requestWhenInUseAuthorization]; 
       } else { 
        NSLog(@"Info.plist does not contain NSLocationAlwaysUsageDescription or NSLocationWhenInUseUsageDescription"); 
       } 
      } 
     } 
     [self.locationManager startUpdatingLocation]; 
     [self.FirstMap setShowsUserLocation:YES]; } 

    - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error { 
     NSLog(@"didFailWithError: %@", error); 
     UIAlertView *errorAlert = [[UIAlertView alloc] 
            initWithTitle:@"Error" message:@"Failed to Get Your Location" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [errorAlert show]; } 

Есть ли что-то, о чем я забыл? Спасибо!

ответ

4

Возможно, вам нужно сначала прочитать эту тему, поскольку она в значительной степени перекрывается.

Location Manager Error : (KCLErrorDomain error 0)

Но в любом случае, я проверил свой код и получил ту же ошибку, как вы сообщили. Затем я меняю конфигурацию моделирования. Чтобы быть конкретным, в симуляторе я нажал «Отладка» -> «Местоположение ->« Пользовательское местоположение »... и введите координату, и я могу периодически получать события местоположения (со скоростью каждого образца в секунду). Поэтому, возможно, проблема не в том, из кода, но из самого симулятора. Надеюсь, мой ответ поможет.

UPDATE

Я предполагаю, что я неправильно понял ваш вопрос. Вы хотите «автоматически» получить свое текущее местоположение в симуляторе. Я боюсь, что в xcode нет такой функции, вместо этого вам нужно использовать «добавить gpx-файл в проект», что даже больше, чем использование настраиваемого местоположения. Но я имею в виду, если вы успешно получили правильные местоположения, почему это беспокоит вас, чтобы получить правильное текущее местоположение от симулятора или альтернативу, возможно, вы можете протестировать на телефоне?

+0

Как я сказал, когда указываю местоположение, например. Лондон показывает это правильно. Службы определения местоположения в приложении карты в симуляторе также работают (поэтому симулятор получает местоположение). –

+0

Ой, я не знал, что я не могу получить текущее местоположение в iOS Simulator. Я подумал, что если приложение карты на Simulator правильно показывает (то же самое, что и приложение Map в Mac), есть способ показать это. Благодаря ! –

2

В прошивке 8 Вы должны сначала взять разрешение у пользователя доступ к хранилищу, вы не можете получить доступ к локальному, как в прошивке 7

if CLLocationManager.locationServicesEnabled() { 
     if self.manager.respondsToSelector("requestWhenInUseAuthorization") { 
      manager.requestWhenInUseAuthorization() 
     } else { 
      startUpdatingLocation() 
     } 
    } 

для получения дополнительной принять помощь от этой ссылки http://nshipster.com/core-location-in-ios-8/

1

Check Интернет-соединение. если соединение в порядке, то Сначала перейдите в панель журнала Xcode и установите «Dont imulate location». Затем выберите меню симулятора> debug> location> set custom или выберите любой.

Смежные вопросы