iphonecllocationmanagerdidfailwitherror

How to handle "Don't Allow" for location manager?


I haven't think of this yet now .

Till now whenever device was asking me use location update I was allowing it .

But when now I am not allowing then it the location manager gives me kclErrorDenied and the location manager can not start again until I restart the application .

So my question is that should I give a message to restart the app to the user or is there a solution to start working the location manager again .

thanks .

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.)"

Solution

  • Implement - (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
        }
    }