尽管被授权,CLAuthorizationStatus返回kCLAuthorizationStatusNotDetermined

时间:2012-10-06 18:24:27

标签: iphone ios core-location

我在这里有一个授权状态,我不知道发生了什么。

 if(sender.on == TRUE)
{
    [self.locationManager startUpdatingLocation];
    [self.locationManager startUpdatingHeading];

    CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
    bool headingStatus = [CLLocationManager headingAvailable];

    if( !(authStatus == kCLAuthorizationStatusAuthorized))
    {
        [self processFailedAuthorization:authStatus];
        [locationManager stopUpdatingHeading];
        [locationManager stopUpdatingLocation];
        sender.on = FALSE;

    }

似乎authStatus有时显示为kCLAuthorizationStatusNotDetermined,尽管只是提示用户授权。

我已经在调试器中逐步完成了代码,似乎如果我在检查CLAuthorizationStatus之前等待一小段时间,那么它确实会被授权回来,而如果我立即检查,那么它就不会

我知道我可以等待一秒左右然后继续,但文档中没有任何关于延迟的要求。

发生了什么事?

1 个答案:

答案 0 :(得分:2)

CLLocationManagerDelegate有一个回调locationManager:didChangeAuthorizationStatus:,以便在授权状态发生变化时通知您。它将新状态传递给您的代理人。这是要看的状态。就像location一样,CLLocationManager对象中的状态也可以改变。