網上關于定位的使用方式很多, 我這里主要分享一下定位權限問題.
iOS 8以后, 使用CLLocationManager進行定位時都需要先獲取權限, 獲取權限的方式目前有兩種:
- (void)requestWhenInUseAuthorization API_AVAILABLE(ios(8.0)) API_UNAVAILABLE(macos);
- (void)requestAlwaysAuthorization API_AVAILABLE(ios(8.0)) API_UNAVAILABLE(macos) __TVOS_PROHIBITED;
前者是申請應用使用時的定位權限, 后者是申請永久定位權限.
蘋果要求我們自己提供申請權限的文案, 所以在Info.plist中添加了4個Privacy - Location開頭的Key, 這4個Key分別是:
// iOS 8以后請求使用期間的定位權限時使用
Privacy - Location When In Use Usage Description
// iOS 8 ~ iOS 10 請求永久定位權限時使用
Privacy - Location Always Usage Description
// iOS 11 請求永久定位權限時彈出的字符串
Privacy - Location Always and When In Use Usage Description
iOS 6 ~ iOS 7 請求定位權限時使用, iOS 8 以后廢棄
Privacy - Location Usage Description
定位時小藍條問題
有時我們見到APP在后臺定位時會出現小藍條, iOS 8 以后獲得使用中的定位權限時, APP進入后臺時就會在頂部出現小藍條, 如果獲得了永久定位權限, 就不會出現后臺定位時的小藍條.
另外 iOS 11 中獲得永久定位權限時manager.showsBackgroundLocationIndicator 的值決定了是否展示后臺定位的藍條, 但獲得使用中的定位權限時出現的小藍條無法用manager.showsBackgroundLocationIndicator來取消.