iOS8.0 之后定位
1.前臺定位
1.創建位置管理者CLLocationManager
,并設置代理
2.開始定位,調用方法
locationM.startUpdatingLocation()
3.在CLLocationManagerDelegate
的代理方法中獲取用戶位置信息
iOS8.0后增加操作:
4.主動請求前臺定位授權,
locationM.requestWhenInUseAuthorization()
5.在info.plist中填寫對應的key(一定要填key)
key :NSLocationWhenInUseUsageDescription
問題:
2.后臺定位(需要在前臺定位基礎上,即先將上面5步做完)
測試環境: 一定要在iOS 8.0
中運行,不要在iOS9.0
上運行!
方案一:
- 需要開啟后臺模式 Location updates
操作:
Capabilities -> Background Models -> 選中Location updates 打鉤
- 當在后臺獲取到用戶的位置時,會在頂部顯示一個藍條,提醒用戶這個app在不斷的獲取你的位置信息
- 當用戶點擊了這個藍條,會打開對應的app
location0.png
方案二:
條件:
1.開啟前后臺定位授權,調用函數 requestAlwaysAuthorization()
-
2.在info.plist中填寫對應的key(一定要填key)
key :
NSLocationAlwaysUsageDescription
效果:
- 無論是否勾選后臺模式, 都可以獲取位置信息. 而且無論前后臺, 都不會出現藍條
locationM.requestAlwaysAuthorization()
- 只要開啟前后臺定位授權,默認情況下, 就可以在后臺獲取用戶位置信息, 不需要勾選后臺模式location updates
3. 定位不到, 對應的代理方法不執行
解決:
- 首先,檢查運行的模擬器是否是iOS8.0之前的系統版本
- 其次,檢查模擬器是否設置位置數據
- 第三,確保代碼無問題(一般都是代理沒有設置,或者位置管理器對象是局部變量)
- 第四,模擬器BUG, 請將模擬器位置設為None,然后再次設置數據; 或者,重置模擬器