ios定位权限plist_iOS(定位一)后台定位和前台定位权限设置

这篇博客详细介绍了如何在iOS中设置定位权限,包括前台授权和后台定位的实现。首先导入`CoreLocation`框架,创建`CLLocationManager`实例,并根据iOS版本选择合适的授权方法。对于前台授权,需要在`info.plist`中设置`NSLocationWhenInUseUsageDescription`,而对于始终使用定位服务(可能引起用户反感),则需设置`NSLocationAlwaysUsageDescription`。为了实现后台定位,在`info.plist`中添加背景模式并设置`allowsBackgroundLocationUpdates`。此外,还讲解了设置定位代理和优化定位策略,如距离筛选器和期望精确度,以减少不必要的回调和能耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一次定位及设置前台授权和后台定位

1.  首先导入头文件         #import

2. 添加位置管理者属性    @property(nonatomic,strong)CLLocationManager*mgr;

3. 创建定位管理者 统一管理定位服务    _mgr= [[CLLocationManageralloc]init];

4. 请求授权  (三种方法: 第一种是前台授权  第二种是前后台同时授权但是用户反感

第三种是设置前台定位及设置代码和info.plist设置后台定位)

4.1  仅限于在前台使用时授权

1) 配置info.plist相关key (NSLocationWhenInUseUsageDescription)

2)做好低版本适配

if([_mgrrespondsToSelector:@selector(requestWhenInUseAuthorization)]){

//当应用在使用时可以使用定位服务(仅限于应用在前台使用时授权,一旦程  序到后台就停止定位)

[_mgrrequestWhenInUseAuthorization];

}

4.2 应用始终使用定位服务(应用在前台和后台都能获取到定位服务)——这种方式用户反感

1)配置info.plist相关key(NSLocationAlwaysUsageDescription)

2)做好低版本适配

if([_mgrrespondsToSelector:@selector(requestWhenInUseAuthorization)]){

1.2.2应用始终使用定位服务(应用在前台和后台都能获取到定位服务) //用户反感

//反感是因为授权提示是 :@"应用未打开时,允许定位"

[_mgrrequestAlwaysAuthorization];

}

4.3 应用开启临时后台(设置后台运行模式) (常用模式)

1)配置info.plist相关key ( 这里需要新加一个选项 选择: Required background modes->打开items->选取App registers for location updates(定位后台运行的模式))  — 在ios8 之前只要设置这个就行了

2)在ios8以后就是ios9的一个新特性需要再加上一句代码 才能执行这个功能

IOS9新特性要求代码允许mgr执行后台运行模式

_mgr.allowsBackgroundLocationUpdates=YES;//这是获取后台定位 前台授权还需要再设置 要是不要后台定位 这个就不要设置

注意 : 这个时候 用户反感的那个就要取消掉不用,但是前台的授权模式还是要打开

5. 设置代理   同时遵守协议

1.3获取数据设置代理 

_mgr.delegate=self;

6. 开启定位               [_mgrstartUpdatingLocation];

7. 实现CLLocationManagerDelegate 代理方法

当更新位置时调用    底层是异步操作定位

-(void)locationManager:(CLLocationManager*)manager didUpdateLocations:(NSArray *)locations{

CLLocation: 位置对象包含了位置信息这个里面有很多其他的属性可以设置  点击头文件查看即可

CLLocation*location = locations.lastObject;

NSLog(@"%f,%f",location.coordinate.latitude,location.coordinate.longitude);

停止定位

[_mgr stopUpdatingLocation];

}

写到这里 基本的 定位(后台前台)都讲完了   还有其他的设置优化持续定位 如下:

优化持续定位  : (经纬度不变的情况下 就不用一直不断的去请求)

1.  距离筛选器  减少不必要的回调

_mgr.distanceFilter = 10;

2  设置期望精确度  减少耗电量(减少能耗)

_mgr.desiredAccuracy=kCLLocationAccuracyBestForNavigation;//这个还有很多枚举值可以根据自己需要的进行选取

谢谢! !  希望能帮到大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值