gpt4 book ai didi

ios - 在 requestAlwaysAuthorization 之后立即使用 CLLocationManager

转载 作者:行者123 更新时间:2023-11-29 01:20:18 25 4
gpt4 key购买 nike

我有一个关于 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)

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

最佳答案

您需要实现locationManager:didChangeAuthorizationStatus:。一旦您获得授权,它就会被调用,然后您可以立即继续使用位置管理器。

你实际上可以预先将一个 block (在你获得授权后说出你想做什么)存储为一个属性,这样当 locationManager:didChangeAuthorizationStatus: 被调用时,你可以查看是否已存储该 block ,如果已存储,则调用它。

关于ios - 在 requestAlwaysAuthorization 之后立即使用 CLLocationManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com