2013-11-23 5 views
5

Utilizzando IBeacon e CoreLocation sto ricevendo il seguente errore:Codici CLLocationManager kCLErrorDomain?

errore di dominio = kCLErrorDomain Codice = 16 "L'operazione non ha potuto essere completato (errore kCLErrorDomain 16.)

A meno che non mi manca di esso. , non sembra essere un chiaro riferimento su Apple per ciò che ciascuno del codice di errore significa

qualcuno può interpretare questo codice di errore

l'errore chiama da:.?

- (void)locationManager:(CLLocationManager *)manager rangingBeaconsDidFailForRegion: (CLBeaconRegion *)region withError:(NSError *)error{ 
NSLog(@"%@", error); 
} 

- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error{ 
NSLog(@"%@", error); } 
+1

Consultare la documentazione di [CLError] (https://developer.apple.com/library/mac/documentation/CoreLocation/Reference/CoreLocationConstantsRef/Reference/reference.html) e il file di intestazione '' CLError.h '' – quellish

risposta

12

Guarda i documenti per CLError. Il valore 16 è kCLErrorRangingUnavailable.

La documentazione dicono:

Ranging is disabled. This might happen if the device is in Airplane mode or if Bluetooth or location services are disabled.

+0

Eccellente. Grazie per il suggerimento. (Votato) –

+1

Sì, grazie per quello - anche se è chiaramente un bug con Apple. I servizi di localizzazione stavano chiaramente funzionando mentre i radiofari venivano distribuiti, e quindi si ottiene questo breve errore che quindi si auto-corregge da solo. Quindi i beacon stanno andando bene, poi ottieni il messaggio di errore, e torna a funzionare correttamente. Non abbiamo toccato il telefono o il beacon e, in base al monitoraggio del beacon, non si sono verificati cambiamenti nella potenza del segnale. Grazie per la risposta! – BEEKn

+0

L'accensione e lo spegnimento del telefono lo hanno risolto per me. – shim

1

Inoltre, assicurarsi di avere Aggiornamento app in background attivata. Per qualche ragione con il mio iPhone 5s su iOS 7.1.1, i beacon non si sposteranno quando Aggiornamento app in background è disabilitato, anche se la mia app è in primo piano. L'attivazione dell'aggiornamento delle app ha causato un nuovo raggio d'azione dei beacon.

1

È possibile utilizzare l'enro di CLError e l'errore restituito al proprio gestore di posizione per gestire gli errori di posizione in modo specifico e chiaro.

Ecco come si presenta:

func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) { 
    if let locationError = CLError(rawValue: error.code) { 
    switch locationError { 
    case .Denied: 
     println("Location permissions denied") 
    default: 
     println("Unhandled error with location: \(error)") 
    } 
    } 
} 

Grazie alla @rmaddy per la punta CLError.