2012-12-05 2 views
9

현재 CLLocationManager으로 작업 중이며 장치의 현재 제목에 대한 정보를 얻고 싶습니다. 지금까지 모든 것이 잘 작동하고, 기능이 구현되었으며 이제는 내 앱을 연마하려고합니다.iOS에서 나침반 교정 스위치 상태를 감지하는 방법

사용자 설정에서 compass calibration 플래그를 끄면 더 이상 내 앱으로 업데이트가 전송되지 않습니다. 이 경우 사용자에게 몇 가지 피드백을주고 싶습니다. 다시 나침반 보정을 켜야합니다. 그렇지 않으면 앱이 작동하지 않습니다.

사용자가 내 앱의 location services을 끈 경우에도 여전히 자기 머리글을 받게된다는 것을 알았습니다. 그러나 "나침반 보정"설정이 사용자에 의해 켜지면 더 이상 제목 업데이트가 수신되지 않습니다. 하지만 어떻게 "컴파스 보정"이 꺼져 있는지 CoreLocation 프레임 워크를 통해 확인할 수 있습니까?

는 "CLLocationManagerDelegate는"나에게

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

방법을 통해 업데이 트를 제공합니다. 그러나 상태는 "위치 서비스"가 내 앱에 사용 중이거나 활성화 된 경우에만 나타납니다.

은 또한 어떤 성공없이

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

delegate 방법을 통해 일부 유효한 정보를 얻기 위해 노력했다.

CoreLocation 프레임 워크에 "나침반 보정"플래그가 켜지거나 꺼져 있는지 알 수있는 내용이 있습니까?

+1

답변을 찾았습니까? –

답변

4

나침반 교정이 꺼져있는 경우 의 locationManager:didUpdateHeading:-1이 표시되어야합니다. 이 작업을 수행해야합니다.

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

고마워요! 이것은 내가 필요한 것입니다. 내 응용 프로그램 (Core Motion을 사용하고 있습니다)에서 직접 제목을 사용하지 않기 때문에 'didUpdateHeading' 메서드를 구현하지 않았고 해당 문서를주의 깊게 보지 않았습니다. –

+0

내가 도와 줄 수있어 다행 :) – Rick

관련 문제