2012-12-05 9 views
9

Attualmente sto lavorando con lo CLLocationManager e voglio essere informato sull'intestazione corrente del dispositivo. Finora tutto funziona, le funzionalità sono implementate e ora provo a lucidare la mia app.Come rilevare lo stato dell'interruttore di calibrazione della bussola su iOS

C'è un caso angolo, se l'utente disattiva il flag compass calibration nella rubrica delle impostazioni utente, gli aggiornamenti non verranno più inviati alla mia app. In tal caso voglio dare un feedback all'utente, che deve attivare nuovamente la calibrazione della bussola altrimenti la mia app non funzionerà.

Ho scoperto che, nel caso in cui l'utente spenga lo location services per la mia app, continuerò a ricevere la direzione magnetica. Ma se l'impostazione di "calibrazione della bussola" verrà disattivata dall'utente, non riceverò più aggiornamenti di intestazione. Ma come posso identificare attraverso il framework CoreLocation che la "calibrazione della bussola" è stata disattivata?

Il "CLLocationManagerDelegate" mi dà un aggiornamento attraverso il metodo

- (void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status 

. Ma lo stato indica solo se i "servizi di localizzazione" sono in-attivi per la mia app.

Ho anche cercato di ottenere alcune informazioni valide attraverso il metodo

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error 

delegate, senza alcun successo.

C'è qualcosa nel framework CoreLocation che può dirmi se il flag "calibrazione bussola" è attivato/disattivato.

+1

Avete mai trovato una risposta per questo? –

risposta

4

Da quello che ho trovato, newHeading.trueHeading in locationManager:didUpdateHeading: deve essere -1 se la calibrazione della bussola è disattivata. Questo dovrebbe farlo:

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading 
{ 
    if(newHeading.trueHeading == -1) 
     //Compass calibration is off provided location services are on for the app 
} 
+0

Grazie! Questo è esattamente ciò di cui avevo bisogno. Non sto usando l'intestazione direttamente nella mia app (sto usando Core Motion) quindi non avevo ancora implementato il metodo 'didUpdateHeading' e non ho guardato la documentazione corrispondente con la dovuta attenzione. –

+0

Felice di poter aiutare :) – Rick

Problemi correlati