iOS定位許可權與使用闡述 (含iOS14定位適配)
https://www.jianshu.com/p/4541cd070423
### 一、前言
大資料時代,使用者對自己的隱私安全越來越關注,所以,隨著iOS系統更新,蘋果對使用者隱私相關(定位、相簿、網路、貼上板等)許可權控制持續升級。其中定位許可權相關申請API與配置項較多,本文旨在記錄說明 iOS8.0 - 14.0beta 從許可權申請到獲取定位資料流程。
內容包括定位許可權、獲取定位資料、定位許可權API呼叫實踐。定位許可權模組按照系統相關性分別介紹該系統下許可權配置與API呼叫細節、注意事項與表格總結;獲取定位資料模組介紹定位關鍵引數、單次/連續定位等;呼叫實踐模組介紹了從 iOS8.0 - 14.0beta 系統定位許可權的適配實踐。
### 二、定位許可權
#### 1、iOS8.*
-前臺定位
-需要在info.plist配置NSLocationWhenInUseUsageDescription欄位;
-首次使用定位時,通過API介面requestWhenInUseAuthorization申請應用使用時許可權;
注意:此許可權下,如果Xcode勾選 Capabilities -> UIBackgroundModes > Location updates,則app退到後臺仍可獲取定位資料,但此時在手機上方會有定位小藍條提示;
-後臺定位
-需要在info.plist配置NSLocationAlwaysUsageDescription欄位;
-需要Xcode勾選 Capabilities -> UIBackgroundModes > Location updates;
-首次使用定位時,通過API介面requestAlwaysAuthorization申請應用未使用時許可權;
#### 2、iOS9.*與iOS10.*
-**前臺定位**
-需要在info.plist配置NSLocationWhenInUseUsageDescription欄位;
-首次使用定位時,通過API介面requestWhenInUseAuthorization申請應用使用時許可權,如下圖;
注意:此許可權下,如果Xcode勾選 Capabilities -> UIBackgroundModes > Location updates並且allowsBackgroundLocationUpdates設為YES,則app退到後臺仍可獲取定位資料,但此時在手機上方會有定位小藍條提示;
-**後臺定位**
-需要在info.plist配置NSLocationAlwaysUsageDescription欄位;
-需要Xcode勾選 Capabilities -> UIBackgroundModes > Location updates;
-需要CLLocationManager設定allowsBackgroundLocationUpdates為YES;
-首次使用定位時,通過API介面requestAlwaysAuthorization申請應用未使用時許可權,如下圖;
-**與iOS8.*版本相比不同點**
-iOS9.*後臺增加了allowsBackgroundLocationUpdates屬性,可以認為在iOS8.*下allowsBackgroundLocationUpdates永遠為YES;
#### 3、iOS11.*與iOS12.*
-**前臺定位**
-需要在info.plist配置NSLocationWhenInUseUsageDescription欄位;
-首次使用定位時,通過API介面requestWhenInUseAuthorization申請應用使用時許可權,如下圖;
注意:此許可權下,如果Xcode勾選 Capabilities -> UIBackgroundModes > Location updates並且allowsBackgroundLocationUpdates設為YES,則app退到後臺仍可獲取定位資料,但此時在手機上方會有定位小藍條提示,此小藍條不可隱藏;
-**後臺定位**
-需要在info.plist配置NSLocationWhenInUseUsageDescription、NSLocationAlwaysAndWhenInUseUsageDescription欄位;
-需要Xcode勾選 Capabilities -> UIBackgroundModes > Location updates;
-需要CLLocationManager設定allowsBackgroundLocationUpdates為YES;
-首次使用定位時,通過API介面requestAlwaysAuthorization申請應用未使用時許可權,如下圖;
注意:此許可權下,當app在後臺時,系統預設不展示定位小藍條,可通過showsBackgroundLocationIndicator控制小藍條是否顯示;
-**與iOS10.*版本相比不同點**
-iOS11.*變更了後臺定位許可權配置欄位;
-iOS11.*以後如果申請後臺定位,info.plist需要同時配置
作者:謝見章
連結:https://www.jianshu.com/p/4541cd070423
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。