1. 程式人生 > 其它 >iOS定位許可權與使用闡述 (含iOS14定位適配)

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
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。