我在这里有一个授权状态,我不知道发生了什么。
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
之前等待一小段时间,那么它确实会被授权回来,而如果我立即检查,那么它就不会
我知道我可以等待一秒左右然后继续,但文档中没有任何关于延迟的要求。
发生了什么事?
答案 0 :(得分:2)
CLLocationManagerDelegate有一个回调locationManager:didChangeAuthorizationStatus:,以便在授权状态发生变化时通知您。它将新状态传递给您的代理人。这是要看的状态。就像location一样,CLLocationManager对象中的状态也可以改变。