iOS开发,定位功能是很多app的核心功能,也是出门在外的必用功能,现在来重新整理一下CoreLocation这个框架常用以及新增功能。
1.首先设置locationManager,都是简单明了的:
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = 10;
[self.locationManager requestWhenInUseAuthorization];
[self.locationManager startUpdatingLocation];
2.实现delegate,当有位置更新时自定义操作:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
NSLog(@"%@", [locations lastObject]);
}
3.iOS8新增:
- requestWhenInUseAuthorization
- requestAlwaysAuthorization
这两个方法用于请求定位服务授权,一个是使用期间授权,一个是永久授权。对于用户来说是好事,当app不在使用,不希望获取自己的定位,可以省电省流量,也可以保护用户的隐私。还可以在plist设置当弹出请求时的文字信息。
- startMonitoringVisits
- stopMonitoringVisits
只是看这两个方法真不知是表达什么,顺藤摸瓜,看了delegate,找到了一个新增类CLVisit,官方文档叙述是包含了用户去过一些有趣地方的信息。应该是用户如果去到一些经典或者著名的地方就会触发,就会回调相关的信息,觉得很适合导航类app做广告用。
CLFloor
这是一个新增类,只有一个属性:level,显示当前所在楼层。
3.iOS9新增:
- (void)requestLocation
对于一些不是以定位为核心的app来说,这是一个很好用的api,这个方法会马上更新返回当前的定位信息,只会调用一次,省电省流量。
allowsBackgroundLocationUpdates
这是一个新增属性,决定是否在后台接收定位信息,如果设置为YES需要同时在plist设置UIBackgroundModes。这样当app不在当前运行进入后台后也会接收到定位信息。
综合来看,以后苹果会在室内导航上面下功夫,CLVisit和CLFloor就是为以后的实现做铺垫,不过目前相关api很少,没有多少研究的空间。