SWIFT中擷取當前經偉度

來源:互聯網
上載者:User

標籤:

很多的APP中都會用到使用者的當前位置資訊,本文將實現這個小功能

import UIKitimport CoreLocation  //添加引用class ViewController: UIViewController,CLLocationManagerDelegate {    let locationManager:CLLocationManager = CLLocationManager() //執行個體化一個CLLocationManager對象    override func viewDidLoad() {        super.viewDidLoad()        locationManager.delegate = self        locationManager.desiredAccuracy = kCLLocationAccuracyBest //設定為最高的精度        if(ios8()){            locationManager.requestAlwaysAuthorization()  //如果是IOS8及以上版本需調用這個方法        }                locationManager.startUpdatingLocation()  //start updating location    }        func ios8() -> Bool {        var versionCode:String = UIDevice.currentDevice().systemVersion        let start:String.Index = advance(versionCode.startIndex, 0)        let end:String.Index = advance(versionCode.startIndex, 1)        let range = Range<String.Index>(start: start, end: end)        let version = NSString(string: UIDevice.currentDevice().systemVersion.substringWithRange(range)).doubleValue        return version >= 8.0    }    //重寫這個方法擷取位置    func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!){        let location:CLLocation = locations[locations.count - 1] as! CLLocation //得到數組中的最後一個元素        if location.horizontalAccuracy > 0 {            let latitude = location.coordinate.latitude  //得到經偉度            let longtitude = location.coordinate.longitude            locationManager.stopUpdatingLocation() //stop updating location        }            }    //重寫當發生錯誤時要調用的方法    func locationManager(manager: CLLocationManager!, didFailWithError error: NSError!){        println(error)    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }}

 寫要上面的代碼還需要在info.plist檔案內添加以下幾個索引值:

請求獲得應用一直使用定位服務授權:NSLocationAlwaysUsageDescription:“Please allow me to get you location”

在使用者第一交使用APP時也會詢問是否允許APP擷取目前使用者的地理位置資訊

請求獲得應用使用時的定位服務授權:Location Usage Description:“我們需要使用你的地理位置儲備“

iOS 8 還提供了更加人性化的定位服務選項。App 的定位服務不再僅僅是關閉或開啟,現在,定位服務的啟用提供了三個選項,「永不」「使用應用程式期間」和「始終」。同時,考慮到能耗問題,如果一款 App 要求始終能在後台開啟定位服務,iOS 8 不僅會在首次開啟 App 時主動向你詢問,還會在日常使用中彈窗提醒你該 App 一直在後台使用定位服務,並詢問你是否繼續允許。在iOS7及以前的版本,如果在應用程式中使用定位服務只要在程式中調用startUpdatingLocation方法應用就會詢問使用者是否允許此應用是否允許使用定位服務,同時在提示過程中可以通過在info.plist中配置通過配置Privacy - Location Usage Description告訴使用者使用的目的,同時這個配置是可選的。
但是在iOS8中配置配置項發生了變化,可以通過配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription來告訴使用者使用定位服務的目的,並且注意這個配置是必須的,如果不進行配置則預設情況下應用無法使用定位服務,開啟應用不會給出開啟定位服務的提示,除非安裝後自己設定此應用的定位服務。同時,在應用程式中需要根據配置對requestAlwaysAuthorization或locationServicesEnabled方法進行請求。

 

SWIFT中擷取當前經偉度

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.