10

我目前正在使用CLLocationManager并希望了解设备的当前标题。到目前为止一切正常,功能已实现,现在我尝试完善我的应用程序。

有一个极端情况,如果用户关闭compass calibration用户设置中的标志,标题更新将不再发送到我的应用程序。在这种情况下,我想给用户一些反馈,他必须再次打开指南针校准,否则我的应用程序将无法运行。

我发现如果用户关闭location services我的应用程序,我仍然会收到磁航向。但是,如果用户关闭“指南针校准”设置,我将不再收到任何航向更新。但是我如何通过CoreLocation框架识别“指南针校准”已关闭?

CLLocationManagerDelegate”通过

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

方法。但状态仅指示“位置服务”是否对我的应用程序处于非活动状态/活动状态。

我还尝试通过

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

delegate方法,没有成功。

框架中有什么东西CoreLocation可以告诉我“指南针校准”标志是否打开/关闭。

4

1 回答 1

6

根据我的发现,如果指南针校准已关闭newHeading.trueHeading,则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
}
于 2015-01-04T17:52:09.790 回答