iPhone locationManager: проблема didFailWithError при отключении GPS

Итак, я следил за другими связанными темами, но по какой-то причине у меня все еще есть эта ошибка, и я готов рвать на себе волосы. Я реализовал locationManager:didFailWithError, чтобы проверить, выбирает ли пользователь «Не разрешать» для использования текущего местоположения.

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
NSLog(@"IN ERROR");
if ([error code] == kCLErrorDenied){  
 [manager stopUpdatingLocation];
 }
}

Однако следующая ошибка всегда появляется, когда пользователь выбирает «Не разрешать»… это странно, особенно порядок появления текста «В ОШИБКЕ».

ОШИБКА, время, 293420691.000, функция, "void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)", сервер не принял регистрацию клиента 1 2010-04-19 21:44:51.000 testApp[1414:207] IN ERROR

Таким образом, он выводит эту ошибку еще до того, как у него есть шанс попасть в функцию didFailWithError. У кого-нибудь есть идеи о том, что может происходить? Остальная часть кода locationManager выглядит следующим образом:

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
locationManager.distanceFilter = 2;  
[locationManager startUpdatingLocation];

person BenG    schedule 20.04.2010    source источник


Ответы (2)


Похоже, это просто информационное сообщение от Core Location. Это не приводит к сбою вашего приложения, пользователь его не увидит, и оно по-прежнему вызывает didFailWithError с правильным кодом ошибки.

В моих тестах сообщение появляется на симуляторе и устройстве iPhone (3.1.3) и на симуляторе iPad, но не на устройстве iPad (3.2).

person Community    schedule 20.04.2010
comment
Спасибо, DyingCactus... Наверное, я просто слишком параноик, что Apple отвергает мое приложение из-за таких мелочей, но если это нормально, то я больше не буду терять сон из-за этого. Спасибо! - person BenG; 20.04.2010

Если вы также используете MapKit, это ошибка в MapKit. MapKit регистрируется в Core Location, а затем неправильно обрабатывает сообщение об ошибке, когда пользователь отклоняет обновление местоположения или происходит сбой. Он должен передать эту ошибку через метод делегата (как это делается для ошибок геокодирования), но этого не происходит.

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

person Community    schedule 23.05.2010