[英]Why my “Allow Location Access” is always turned off when I switch it to on?
內部Location Services
我允許我的應用始終使用位置。 在viewDidLoad中,我創建了一個計時器,每2秒調用一次我的方法:
println("---\(locationManager.location)")
一開始我得到---nil
,但是當我進入設置並將訪問權限更改為always ,然后再次返回到應用程序時,我立即得到:
---<+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)
如何在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:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.