Службы определения местоположения не работают в ios8

Я борюсь уже пару дней и не могу решить свою проблему (несмотря на всю информацию здесь, на SO). Прости за глупость.

В моем приложении службы определения местоположения перестали работать в iOS 8. До этой версии все было ок. Я читал здесь, что в файле de plist должны быть какие-то ключи и что они должны быть установлены с помощью внешнего редактора.

Вот он: Скриншот ключей в файле Plist

Но это все еще не работает. В симуляторе или на моем устройстве, если уж на то пошло, меня не подсказывают.

Я также понимаю, что нужно добавить некоторый код в мои файлы. Какой код добавить, куда добавить?

Это мой файл .h:

@property (strong, nonatomic) CLLocationManager *location;

Это в моем файле .m:

@synthesize location;

-(void) locationStuff {

//Get location en set MapView

location=[[CLLocationManager alloc]init];
location.delegate=self;
location.desiredAccuracy=kCLLocationAccuracyBest;
location.distanceFilter=kCLDistanceFilterNone;
location.pausesLocationUpdatesAutomatically = NO;

[self startUpdatingLocation];

[mapView setDelegate:self];
[mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
[mapView setCenterCoordinate:mapView.userLocation.location.coordinate animated:YES];

[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:NO] forKey:@"appRunning"];

[[NSUserDefaults standardUserDefaults] synchronize];

}

Может, пожалуйста, кто-нибудь мне помочь? Спасибо и еще раз извините, что я не понял ответы на другие вопросы. Мне действительно нужно какое-то простое объяснение.


person A3O    schedule 20.09.2014    source источник


Ответы (1)


Это изменилось в iOS 8. Вы должны запросить службу определения местоположения со следующим кодом.

  • requestAlwaysAuthorization - для фонового расположения

    [self.locationManager requestAlwaysAuthorization];or

  • requestWhenInUseAuthorization-местоположение только когда приложение активно

    [self.locationManager requestWhenInUseAuthorization];

Если вы не сделаете ни один из двух запросов, iOS проигнорирует запрос startUpdateLocation.

Также. Включите ключ NSLocationAlwaysUsageDescription или NSLocationWhenInUseUsageDescription, что, как я вижу, вы уже сделали.

Надеюсь это поможет.

person Bhumit Mehta    schedule 20.09.2014
comment
Отчасти помогает. Ставлю код [self.location requestAlwaysAuthorization]; на мой взглядDidLoad. Иногда диалог появляется, а иногда нет. Ключи остаются на том же месте. Иногда он показывает местоположение, и мое приложение работает, а иногда местоположение не видно, и, очевидно, приложение не работает. Какие-либо предложения? - person A3O; 20.09.2014