Swift使用CoreLocation,你必须要看这一篇
CoreLocation,在我們這里討論的是一個最常用的東西,就是用Location Manger獲取用戶當前的位置。
整個的來說非常簡單。只要這樣:
import CoreLocation需要使用整個框架,那么引入整個框架就是必須的。然后需要在你的類里實現一個protocol。就是CLLocationManagerDelegate,并在代碼中實現protocol里的相關方法。分別是這樣喝這樣:
class ViewController: UIViewController, CLLocationManagerDelegate //MARK: CoreLocationManagerDelegatefunc locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){println("get location")var location:CLLocation = locations[locations.count-1] as CLLocationif (location.horizontalAccuracy > 0) {self.locationManager.stopUpdatingLocation()println(location.coordinate)self.textLabel.text = "latitude \(location.coordinate.latitude) longitude \(location.coordinate.longitude)"}}func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!) {println(error)self.textLabel.text = "get location error"}這些代碼的功能也很簡單。獲取用戶的經度和緯度,之后在界面的UILabel中顯示出來。
在viewWillAppear中開始獲取地理位置,在viewDidDisappear里停止。手機費電的幾個地方就包括地理位置過度頻繁的更新這一項。所以,一定要記得不用的時候就不要再請求系統的GPS數據。否則,用戶在設置的費電大戶里是看得到的。
override func viewWillAppear(animated: Bool) {super.viewWillAppear(animated)self.locationManager.startUpdatingLocation()}override func viewDidDisappear(animated: Bool) {super.viewDidDisappear(animated)self.locationManager.stopUpdatingLocation()}只有這些代碼還是沒有辦法工作的。因為,在iOS8里修改了政策。Look here?
if self.locationManager.respondsToSelector("requestAlwaysAuthorization") {println("requestAlwaysAuthorization")self.locationManager.requestAlwaysAuthorization()}這個是為了兼容iOS7和iOS8的代碼,加入了一個判斷。在iOS8中需要詢問用戶是否同意使用位置信息,否則的話該功能不可用。那么加這個就可以么?NO!!!還需要在,這里就是重點了。在plist文件里配置一個選項。
說到具體的配置有兩個,分別是:requestWhenInUseAuthorization()和requestAlwaysAuthorization()這兩個請求方法。一個是用戶使用的時候才用到定位,一個是一直在后臺獲取更新的定位信息。最后的一個在一定的時候會觸發一個系統的提醒,說這個APP一直在后臺獲取你的位置信息是否允許之類的。這兩個請求方法對應的plist配置也不一樣,分別是NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription。至于在plist添加的方法,就是在plist中添加一個鍵值對,然后把請求允許對應的Key值復制粘貼進去就可以了。value值是什么都可以,這個值會在請求允許的對話框中顯示出來給用戶看。總之是你自己定的。
運行你的APP,你會看到請求提示了:
?
歡迎加群互相學習,共同進步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,轉載請注明出處!http://www.cnblogs.com/sunshine-anycall/p/4147165.html總結
以上是生活随笔為你收集整理的Swift使用CoreLocation,你必须要看这一篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 再战“超融合”,戴尔、Nutanix绝世
- 下一篇: android四大组件之Service