在requestAlwaysAuthorization之后立即使用CLLocationManager

时间:2016-01-09 18:32:27

标签: ios cllocationmanager

我有一个关于CLLocationManager的问题。在请求许可后我想立即使用locationServices。 我在viewDidLoad中的代码:如下所示:

if (![CLLocationManager locationServicesEnabled])
{
    [self locationServicesAreNotEnabled];
}
else
{
    CLAuthorizationStatus authStatus = [CLLocationManager authorizationStatus];
    if (authStatus == kCLAuthorizationStatusDenied || authStatus == kCLAuthorizationStatusRestricted)
    {
        NSLog(@"Location Services unavailable denied/restricted");
    }
    else if (authStatus == kCLAuthorizationStatusNotDetermined)
    {
        [_locationManager requestAlwaysAuthorization];
    }

    if (authStatus == kCLAuthorizationStatusAuthorizedAlways || authStatus == kCLAuthorizationStatusAuthorizedWhenInUse)
    {
        [self startStandardUpdates];
    }
}

`

似乎代码命中行[_location Manager requestAlwaysAuthorization];然后,在不等待用户的回答的情况下,继续下一个if语句。 我怎样才能等待用户的回复,然后再打电话

if (authStatus == kCLAuthorizationStatusAuthorizedAlways || authStatus == kCLAuthorizationStatusAuthorizedWhenInUse)

?我可以通过使用块来实现吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您需要实施body { padding: 0; } .container { padding-top: 20px; padding-bottom: 20px; } 。一旦获得授权,就会立即调用它,然后您可以立即继续使用位置管理器。

事实上,您可以事先将一个区块(在获得授权后立即说出您想要做的事情)作为财产存储,并且当调用locationManager:didChangeAuthorizationStatus:时,您可以查看是否'存储了块,如果有,则调用它。