为啥我的“允许位置访问”在我打开时总是关闭?

Posted

技术标签:

【中文标题】为啥我的“允许位置访问”在我打开时总是关闭?【英文标题】:Why my "Allow Location Access" is always turned off when I switch it to on?为什么我的“允许位置访问”在我打开时总是关闭? 【发布时间】:2015-05-28 11:05:42 【问题描述】:

Location Services 内部,我允许我的应用始终使用位置信息。在 viewDidLoad 我创建了一个计时器,它每 2 秒调用一次我的方法:

println("---\(locationManager.location)")

一开始我收到---nil,但是当我转到设置并将访问权限更改为始终,然后再次返回应用程序时,我立即收到:

---<+50.06689474,+19.92923662> +/- 165.00m (speed -1.00 mps / course -1.00) @ 28.05.2015, 13:00:39 Czas środkowoeuropejski letni

但是一旦打印出来,仍然是:---nil。为什么?

这就是我设置locationManager的方式:

private let locationManager = CLLocationManager()

viewDidLoad()我调用方法:

private func setupLocationManager() 
    locationManager.delegate = self
    locationManager.distanceFilter = kCLDistanceFilterNone
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.startUpdatingLocation()


NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: Selector("printLocation"), userInfo: nil, repeats: true)

【问题讨论】:

你能给我们看一些代码吗? @donmarkusi 我用一些代码更新了问题 通常你使用CLLocationManagerDelegate:developer.apple.com/library/mac/documentation/CoreLocation/…: 是的,我知道,我实现了这个,但是没有调用delegate的方法... 从这里很难分辨。尝试调试您的代码,看看位置管理器是否被释放或什么...***.com/questions/11697730/… 【参考方案1】:

在 Swift 中如何以最简单的方式实现 CoreLocation 框架的答案是:

    import CoreLocation使用时在文件中

    将框架添加到将二进制文件与库链接

    设置private let locationManager = CLLocationManager() 并使用方法实现CLLocationManagerDelegate

    func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) 
    
        if status == .AuthorizedAlways || status == .AuthorizedWhenInUse 
            locationManager.startUpdatingLocation()
        
    
    

    viewDidLoad 中设置您的locationManager 属性:

    private func setupLocationManager() 
        locationManager.delegate = self
        locationManager.distanceFilter = kCLDistanceFilterNone
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
    
        if CLLocationManager.locationServicesEnabled() 
            locationManager.startUpdatingLocation()
        
    
        if CLLocationManager.authorizationStatus() == .NotDetermined 
            locationManager.requestAlwaysAuthorization()
        
    
    

    最重要!!!! 使用键 NSLocationAlwaysUsageDescription 和示例值设置您的 info.plist 文件:Turn on your location, we need it:-)

【讨论】:

以上是关于为啥我的“允许位置访问”在我打开时总是关闭?的主要内容,如果未能解决你的问题,请参考以下文章

请问为啥我的IIS打不开网页呢?

为啥总是关闭数据库连接?

为啥我不能在我的 jQueryUI 模式对话框中输入 TinyMCE?

为啥我的应用程序强制关闭?

为啥我的 strlen 函数总是“崩溃”? [关闭]

无法从 IIS 访问我的 WCF [关闭]