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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM