CLLocationManagerDelegate的讲解

1、更新位置的方法之后就调用这个方法,数组中是按照时间的先后顺序,即为将旧的和新的位置放在数组中

//locationManager:didUpdateLocations:(调用很频繁) - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { CLLocation *location= [locations lastObject]; NSLog(@" location is :%@ ",location.description); [self.locationManager stopUpdatingLocation]; }

2、定位失败
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;

3、方向的更新
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading;

4、用于判断是否显示方向的校对
//用于判断是否显示方向的校对,返回yes的时候,将会校对正确之后才会停止 //或者dismissheadingcalibrationdisplay方法解除。 -(BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager *)manager;

5、进入指定区域
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region ;

6、离开指定的区域
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region;

7、区域定位失败
- (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error ;

8、改变里授权的状态
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status ;

9、开始控制指定的区域
- (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region;

10、已经停止位置的更更新
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager ;

11、位置定位重新开始定位位置的更新
- (void)locationManagerDidResumeLocationUpdates:(CLLocationManager *)manager ;

【CLLocationManagerDelegate的讲解】12、已经完成了推迟的更新
- (void)locationManager:(CLLocationManager *)manager didFinishDeferredUpdatesWithError:(NSError *)error;

13、就是已经访问过的位置,就会调用这个表示已经访问过,这个在栅栏或者定位区域都是使用到的
- (void)locationManager:(CLLocationManager *)manager didVisit:(CLVisit *)visit;

写的时候容易遗漏的就是设置代理:
Assigning to 'id' from incompatible type 'ViewController *const __strong'
出现这个错误:是因为有的时候还没有继承相应的代理。
一些区别:可以通过配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription来告诉用户使用定位服务的目的,这个设置的信息是在用户第一次打开应用的app的时候,会弹出的信息显示但是不同的是这个配置是必须的,如果不进行配置则默认情况下应用无法使用定位服务,打开应用不会给出打开定位服务的提示,也无法获取到位置信息,除非安装后自己设置此应用的定位服务。同时,在应用程序中需要根据配置对requestAlwaysAuthorization或requestWhenInUseAuthorization方法进行请求。
开发者可以在info.plist 文件中设置NSLocationUsageDescription 说明定位identifier目的
[Privacy -Location Usage Description] 这个在ios8可以不写
//这是用户的描述,在ios8之前写的。不过现在基本都是8以上了
我是楚简约,感谢您的阅读,
喜欢就点个赞呗,“?喜欢”,
鼓励又不花钱,你在看,我就继续写~
非用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~

    推荐阅读