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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文地址:https://www.cnblogs.com/itlover2013/p/14991987.html