2010-02-25 6 views
17

Non ci ho ancora pensato.Come gestire "Non consentire" per il responsabile della posizione?

Fino ad ora ogni volta che il dispositivo mi chiedeva di utilizzare l'aggiornamento della posizione lo stavo permettendo.

Ma quando ora non lo concedo, il responsabile della posizione mi dà kclErrorDenied e il gestore della posizione non può ricominciare da capo finché non riavvio l'applicazione.

Quindi la mia domanda è che dovrei dare un messaggio per riavviare l'app all'utente o c'è una soluzione per iniziare a lavorare di nuovo sul gestore di posizione.

grazie.

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

risposta

36

Implementare - (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 
    } 
} 
+0

quindi il sistema operativo lo chiederà due volte e se disabilitiamo sia il momento in cui dobbiamo riavviare l'app, non è vero? – harshalb

+1

Sì, se l'app ha assolutamente bisogno della posizione corrente. – willi

+5

No ... @willi non è corretto. L'app chiederà una volta. La prima volta. Non è possibile avviare una seconda richiesta di autorizzazione. Apple ti chiede di far sapere all'utente (quando fa clic su Non consentire) che il tuo programma non funzionerà senza Geo Location. Se è necessario, informa l'utente di riavviare l'app. Se la tua app può funzionare senza di essa, vai avanti e continua l'app. Indipendentemente da ciò, devi informare l'utente o Apple non approverà la tua app. ps: Loro * fanno * controllare questo ... quindi fallo bene. – Jann