iPhone locationManager: проблема didFailWithError при отключенном GPS - PullRequest
1 голос
/ 20 апреля 2010

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

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

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

ERROR, время, 293420691,000, функция, "пустота 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];

Ответы [ 2 ]

0 голосов
/ 23 мая 2010

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

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

0 голосов
/ 20 апреля 2010

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

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

...