iOS iOS9.0 的CoreLocation定位
Posted 枫林晚忆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS iOS9.0 的CoreLocation定位相关的知识,希望对你有一定的参考价值。
一、简介
- ios9.0如果当前处于前台授权状态,默认是不可以后台获取用户位置。
- 如果在前台授权下,让其能获取到后台定位,该怎么办
- 可以设置以下属性为YES,就可以继续获取后台位置,但是会出现蓝条
- 使用注意:必须设置对应的后台模式,勾选后台模式:location updates
@property(assign,nonatomic) BOOL allowsBackgroundLocationUpdates
- 如果在前台授权下,让其能获取到后台定位,该怎么办
-
注意:iOS9.0 可以单次请求用户位置
- (void)requestLocation // 成功调用,locations位置数组,元素按照时间排序 -(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations // 失败调用 -(void)locationManager:(nonnull CLLocationManager *)manager didFailWithError:(nonnull NSError *)error
- requestLocation 作用:
- 按照定位精确度从低到高进行排序,逐个进行定位。如果获取到的位置不是精确度最高的那个,也会在定位超时后,通过代理告诉外界(必须实现代理的-locationManager:didFailWithError:方法)
不能与startUpdatingLocation方法同时使用
- requestLocation 作用:
二、实现步骤
1、 前台定位
- 1.导入CoreLocation框架和对应的主头文件
#import <CoreLocation/CoreLocation.h>
- 创建CLLcationManager对象,并设置代理 请求前台定位授权,并配置KEY
_locationM = [[CLLocationManager alloc] init]; _locationM.delegate = self; if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { [_locationM requestWhenInUseAuthorization]; }
- 3.调用CLLcationManager对象的startUpdatingLocation方法进行更新用户位置
[_locationM startUpdatingLocation];
- 4.实现代理方法,接收位置参数
-(void)locationManager:(nonnull CLLocationManager *)manager didUpdateLocations:(nonnull NSArray<CLLocation *> *)locations
2、后台定位
-
方案一:在APP处于前台定位授权场景下,勾选后台运行模式update locations (如下图) 并且,调用以下方法,设置允许后台定位
if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) { _locationM.allowsBackgroundLocationUpdates = YES; }
注意:如果APP处于后台,则会出现蓝条
-
方案二:请求前后台定位授权,并配置KEY
[_locationM requestAlwaysAuthorization];
文/iOS_成才录(简书作者)
原文链接:http://www.jianshu.com/p/a9a94cbcb775
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
原文链接:http://www.jianshu.com/p/a9a94cbcb775
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
以上是关于iOS iOS9.0 的CoreLocation定位的主要内容,如果未能解决你的问题,请参考以下文章
NSURLConnection(iOS2.0-iOS9.0)简单介绍