iOS 8.0 之前獲取用戶的位置信息
- 默認(rèn)情況下萍启,只能在前臺(tái)獲取用戶位置信息,如果在后臺(tái)也想要獲取用戶的位置信息屏鳍,需要開(kāi)啟后臺(tái)模式勘纯。
iOS 8.0之后,iOS 9.0之前想要獲取用戶的位置信息
- 需要主動(dòng)請(qǐng)求授權(quán)
- 前臺(tái)定位授權(quán)钓瞭,必須在info.plist文件中配置對(duì)應(yīng)的key
- NSLocationWhenInUseUsageDescription
- 默認(rèn)情況下只能在前臺(tái)獲取用戶的位置信息驳遵,如果想要在后臺(tái)也獲取用戶的位置信息,需要開(kāi)啟:后臺(tái)模式山涡,勾選堤结,location updates
- 在后臺(tái)獲取用戶的位置信息,會(huì)在頂部顯示藍(lán)色橫幅鸭丛,實(shí)時(shí)提示用戶該APP在獲取你的位置信息竞穷,點(diǎn)擊藍(lán)色橫幅則會(huì)打開(kāi)該APP
- 前后臺(tái)定位授權(quán),必須在info.plist文件中配置對(duì)應(yīng)的key
- NSLocationAlwaysUsageDescription
- 在前臺(tái)和后臺(tái)都能夠獲取用戶的位置信息,在后臺(tái)獲取用戶的位置信息,不需要開(kāi)啟后臺(tái)模式
iOS 9.0 之后獲取用戶的位置信息
- 前臺(tái)定位授權(quán)鳞溉,和iOS 8.0之后的基本操作一樣瘾带,想要在后臺(tái)獲取用戶的位置信息,需要滿足兩個(gè)條件
- 需要開(kāi)啟后臺(tái)模式: location updates
- 必須允許后臺(tái)獲取用戶的位置信息
- 注意點(diǎn):如果允許后臺(tái)獲取用戶的位置信息,必須勾選后臺(tái)模式,否則會(huì)造成程序崩潰
- 前后臺(tái)定位授權(quán)熟菲,和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, *) {
//前臺(tái)的定位授權(quán)請(qǐng)求申請(qǐng)
locationM.requestWhenInUseAuthorization()
if #available(iOS 9.0, *) {
//允許在后臺(tái)運(yùn)行
locationM.allowsBackgroundLocationUpdates = true
}
//前后臺(tái)的定位授權(quán)申請(qǐng)
// iOS8.0之后的前后臺(tái)定位授權(quán)沒(méi)有任何變化
//locationM.requestAlwaysAuthorization()
}
return locationM
}()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// 開(kāi)始定位
// 調(diào)用這個(gè)方法,就會(huì)不斷地獲取用戶的位置信息
locationM.startUpdatingLocation()
}
}
extension ViewController : CLLocationManagerDelegate {
/// 當(dāng)獲取到用戶的位置的時(shí)候會(huì)來(lái)到該方法
///
/// - Parameters:
/// - manager: 位置管理者
/// - locations: 位置數(shù)組
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
print("定位到了")
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者