gpt4 book ai didi

ios - 在 block 中调用时未发出 CLLocationManager 身份验证请求

转载 作者:行者123 更新时间:2023-11-30 12:50:03 25 4
gpt4 key购买 nike

我的身份验证请求方法存在一些问题,如下所示:

    func requestAuthorisation() {
if CLLocationManager.authorizationStatus() == .NotDetermined {
let locationPermissionRequest = UIAlertController.init(title: "Location services", message: "Some message, hidden for obvious reasons...", preferredStyle: .Alert)
let alwaysOnButton = UIAlertAction.init(title: "Always on (recommended)", style: .Default, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: {
self.locationManager.requestAlwaysAuthorization()
})
})
let backgroundButton = UIAlertAction.init(title: "On when in use", style: .Default, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: {
self.locationManager.requestWhenInUseAuthorization()
})
})
let noButton = UIAlertAction.init(title: "Off", style: .Destructive, handler: { (alert: UIAlertAction!) in
locationPermissionRequest.dismissViewControllerAnimated(true, completion: nil)
})
locationPermissionRequest.addActions(withActions: [alwaysOnButton, backgroundButton, noButton])
locationPermissionRequest.present(true, completion: nil)
}
}

这里的问题是,当我点击“使用时”按钮或“始终”按钮时,会调用它们的操作并消除警报,但从未请求位置身份验证。我在发出身份验证请求和调用方法的行上放置了一个断点。有趣的是,如果我将对身份验证方法的调用移出各自的完成 block ,那么它可以正常工作,但出于我的目的,我需要在我的自定义警报被解除之前不要调用它们。

有谁知道为什么我会看到这种行为/知道修复方法吗?

编辑:

我只是尝试在主线程上调用调度,因为我偷偷怀疑这是一个线程问题,但可惜,事实并非如此。

最佳答案

我知道这是一个相当老的问题,但我之前遇到过这个问题,并想建议如何解决它。

警报 Controller 与位置管理器CLLocationManager对象绑定(bind)。如果您没有保留该对象,则在用户点击它之前,身份验证警报 Controller 将不会显示或消失。

我不确定上面的代码是否有问题,因为我不确定 locationManager 的真正范围是什么,但这解决了我的问题,具有类似的症状.

关于ios - 在 block 中调用时未发出 CLLocationManager 身份验证请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41116842/

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