iOS 8.0 之前獲取用戶的位置信息
- 默認情況下,只能在前臺獲取用戶位置信息,如果在后臺也想要獲取用戶的位置信息,需要開啟后臺模式。
iOS 8.0之后,iOS 9.0之前想要獲取用戶的位置信息
- 需要主動請求授權
- 前臺定位授權,必須在info.plist文件中配置對應的key
- NSLocationWhenInUseUsageDescription
- 默認情況下只能在前臺獲取用戶的位置信息,如果想要在后臺也獲取用戶的位置信息,需要開啟:后臺模式,勾選,location updates
- 在后臺獲取用戶的位置信息,會在頂部顯示藍色橫幅,實時提示用戶該APP在獲取你的位置信息,點擊藍色橫幅則會打開該APP
- 前后臺定位授權,必須在info.plist文件中配置對應的key
- NSLocationAlwaysUsageDescription
- 在前臺和后臺都能夠獲取用戶的位置信息,在后臺獲取用戶的位置信息,不需要開啟后臺模式
iOS 9.0 之后獲取用戶的位置信息
- 前臺定位授權,和iOS 8.0之后的基本操作一樣,想要在后臺獲取用戶的位置信息,需要滿足兩個條件
- 需要開啟后臺模式: location updates
- 必須允許后臺獲取用戶的位置信息
- 注意點:如果允許后臺獲取用戶的位置信息,必須勾選后臺模式,否則會造成程序崩潰
- 前后臺定位授權,和iOS 8.0之后的操作一樣
import UIKit
import CoreLocation
class ViewController: UIViewController {
lazy var locationM : CLLocationManager = {
let locationM = CLLocationManager()
locationM.delegate = self
if #available(iOS 8.0, *) {
//前臺的定位授權請求申請
locationM.requestWhenInUseAuthorization()
if #available(iOS 9.0, *) {
//允許在后臺運行
locationM.allowsBackgroundLocationUpdates = true
}
//前后臺的定位授權申請
// iOS8.0之后的前后臺定位授權沒有任何變化
//locationM.requestAlwaysAuthorization()
}
return locationM
}()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// 開始定位
// 調(diào)用這個方法,就會不斷地獲取用戶的位置信息
locationM.startUpdatingLocation()
}
}
extension ViewController : CLLocationManagerDelegate {
/// 當獲取到用戶的位置的時候會來到該方法
///
/// - Parameters:
/// - manager: 位置管理者
/// - locations: 位置數(shù)組
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("定位到了")
}
}
最后編輯于 :
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。