簡體   English   中英

為什么打開“允許位置訪問”后總是將其關閉?

[英]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框架的答案是:

  1. import CoreLocation 文件中

  2. 添加框架以使用庫鏈接二進制文件

在此處輸入圖片說明

  1. 設置private let locationManager = CLLocationManager()並使用以下方法實現CLLocationManagerDelegate

     func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) { if status == .AuthorizedAlways || status == .AuthorizedWhenInUse { locationManager.startUpdatingLocation() } } 
  2. 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() } } 
  3. 最重要的!!!! 使用鍵NSLocationAlwaysUsageDescription和示例值設置您的info.plist文件: Turn on your location, we need it:-)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM