Как обработать "Не разрешать" для менеджера местоположения - PullRequest
17 голосов
/ 25 февраля 2010

Я еще не думал об этом сейчас.

До сих пор, когда устройство запрашивало у меня обновление местоположения, я разрешал это.

Но теперь, когда я не разрешаю, диспетчер местоположений выдает мне kclErrorDenied, и диспетчер местоположений не может запускаться снова, пока я не перезапущу приложение.

Таким образом, мой вопрос заключается в том, что я должен дать пользователю сообщение о перезапуске приложения или есть решение снова начать работу диспетчера местоположений.

спасибо.

The Error :
ERROR,Time,288787555.078,Function,"void CLClientHandleDaemonDataRegistration(__CLClient*, const CLDaemonCommToClientRegistration*, const __CFDictionary*)",server did not accept client registration 1
WARNING,Time,288787555.108,Function,"void CLClientHandleDaemonInvalidation(__CFMessagePort*, void*)",client 1308.0 has been disconnected from daemon
 locationManager:didFailWithError:] [Line 244] Error Denied :Error Domain=kCLErrorDomain Code=1 "Operation could not be completed. (kCLErrorDomain error 1.)"

1 Ответ

36 голосов
/ 25 февраля 2010

Реализация - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error.

- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    NSMutableString *errorString = [[[NSMutableString alloc] init] autorelease];

    if ([error domain] == kCLErrorDomain) {

        // We handle CoreLocation-related errors here
    switch ([error code]) {
        // "Don't Allow" on two successive app launches is the same as saying "never allow". The user
        // can reset this for all apps by going to Settings > General > Reset > Reset Location Warnings.
        case kCLErrorDenied:
            //...
            break;
        case kCLErrorLocationUnknown:
            //...
            break;
        default:
            //...
            break;
        }
    } else {
        // We handle all non-CoreLocation errors here
    }
}
...