ios - 无法确定用户何时不允许定位服务

标签 ios swift core-location cllocationmanager

我请求用户打开定位服务。我想知道用户何时点击不允许,以便我可以处理一些通知。但是,当我单击“不允许”时,不会调用 didFailWithErrordidChangeAuthorizationStatus 方法。我知道记录器中没有打印任何内容。我附上了代码示例。我做错了什么以及如何解决这个问题。谢谢。

import UIKit

import CoreLocation

class AwesomeViewController: UIViewController, CLLocationManagerDelegate {

    let locationManager = CLLocationManager()

    override func viewDidLoad() {
        super.viewDidLoad()

        let authorizationStatus = CLLocationManager.authorizationStatus()

        if(authorizationStatus == .AuthorizedWhenInUse || authorizationStatus == .AuthorizedAlways) {
            // authorization is good
        } else {
            locationManager.requestWhenInUseAuthorization()
        }
    }


    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
        print(status)
    }

    func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {            
        print(error.localizedDescription)
    }
}

最佳答案

the didFailWithError or didChangeAuthorizationStatus methods are not being called

这些是委托(delegate)方法。您的位置管理器没有任何委托(delegate) - 当然它也没有您(AwesomeViewController 实例)作为委托(delegate)。所以它永远不会调用这些方法。您需要设置位置管理器的委托(delegate)(在这种情况下,您可以将其设置为self)。

关于ios - 无法确定用户何时不允许定位服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115346/

相关文章:

iOS 4.0 音量渐弱

xcode - 'var' 参数已弃用,并将在 Swift 3 中删除

ios - 如何使用CoreLocation获取多个iBeacon?

objective-c - 复制辐射圆,例如MKMapView上的用户位置

ios - 在 UITabBar 上设置图像会在图像上显示额外的一行

ios - OpenGLES 2中的文本/字体渲染(iOS-CoreText?)-选项和最佳实践?

ios - 以编程方式展开 segue

ios - 警报和 segue 以相同的方法不能一起工作

ios - Swift 不允许我有 2 个同名选择器

ios - 获取 "Directions Not Available"使用 URLWithString 调用谷歌地图