2012-12-05 16 views
9

Ich arbeite gerade mit der CLLocationManager und möchte über den aktuellen Kurs des Geräts informiert werden. Bis jetzt läuft alles gut, Features sind implementiert und jetzt versuche ich meine App zu polieren.So erkennen Sie den Kompasskalibrierungsschalterstatus unter iOS

Es gibt eine Ecke Fall, wenn der Benutzer die compass calibration Flag in der Benutzereinstellungen Überschrift deaktivieren Updates werden nicht mehr an meine App gesendet werden. In diesem Fall möchte ich dem Benutzer ein Feedback geben, dass er die Kompasskalibrierung erneut einschalten muss, sonst funktioniert meine App nicht.

Ich fand heraus, dass im Falle der Benutzer schaltet die location services für meine App werde ich noch magnetische Überschrift erhalten. Wenn die Einstellung "Kompasskalibrierung" vom Benutzer deaktiviert wird, erhalte ich keine Aktualisierungen mehr. Aber wie kann ich über das CoreLocation Framework feststellen, dass "Kompasskalibrierung" ausgeschaltet wurde?

Die "CLLocationManagerDelegate" gibt mir ein Update durch die Methode

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

. Der Status zeigt jedoch nur an, ob die "Location Services" für meine App aktiviert sind.

Ich habe auch versucht, einige gültige Informationen über die ohne Erfolg

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

delegate Methode zu erhalten.

Gibt es etwas in der CoreLocation Rahmen, die mir sagen kann, ob "Kompass Kalibrierung" Flag ein-/ausgeschaltet ist.

+1

Haben Sie jemals eine Antwort dafür gefunden? –

Antwort

4

Von dem, was ich gefunden habe, newHeading.trueHeading in sollte -1 sein, wenn die Kompasskalibrierung ausgeschaltet ist. Dies sollte es tun:

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

Danke! Genau das habe ich gebraucht. Ich benutze die Überschrift nicht direkt in meiner App (ich benutze Core Motion), also habe ich nicht einmal die 'didUpdateHeading' Methode implementiert und die entsprechende Dokumentation nicht so sorgfältig angeschaut wie ich sollte. –

+0

Froh, dass ich helfen könnte :) – Rick

Verwandte Themen