В основном половину времени метод делегатCLLocationManager не работает все время (IOS 8, Xcode 6)
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
не называется вообще. Но в другой половине времени он отлично работает! Я обнаружил, что это обычно происходит, когда я впервые запускаю Xcode после закрытия и увольнения, но потом после этого или после пары работает, кажется, работает нормально. Я не уверен на 100%, если это просто проблема с Xcode или что-то, я скоро получу лицензию разработчика, поэтому я посмотрю, будет ли это нормально работать на самом устройстве.
Начиная с viewDidAppear (пытался в viewDidLoad также не имеет никакого значения), я бегу метод инициализации мой locationManager материал:
locationManager = [[CLLocationManager alloc]init];
[locationManager setDelegate:self];
locationManager.distanceFilter = 20.0f;
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.pausesLocationUpdatesAutomatically = NO;
if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)])
[locationManager requestAlwaysAuthorization];
[locationManager startUpdatingLocation];
Иногда это работает, иногда нет. Я даже сделал таймер, чтобы повторно запускать все эти так много секунд, и это не работает.
Есть ли что-то еще, что я должен делать? Есть ли ответ на эту проблему?
Спасибо.
Менеджер местоположения на самом деле предназначен только для работы на устройстве. В симуляторе вы пытались установить местоположение? – Milo
Что вы подразумеваете под * половиной времени *? 'didUpdateLocations' вызывается, когда ОС имеет обновления местоположения для доставки. Иногда это происходит, иногда (реже) это не так. – Mike
Немного вещей, у вас есть 'NSLocationAlwaysUsageDescription', добавленный в ваш файл info.plist apps? Вы установили местоположение в симуляторе? (Debug-> Location) – TyloBedo