1、更新位置的方法之后就调用这个方法,数组中是按照时间的先后顺序,即为将旧的和新的位置放在数组中
//locationManager:didUpdateLocations:(调用很频繁)
- (void)locationManager:(CLLocationManager *)manager
didUpdateLocations:(NSArray<CLLocation *> *)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 ;
12、已经完成了推迟的更新
- (void)locationManager:(CLLocationManager *)manager
didFinishDeferredUpdatesWithError:(NSError *)error;
13、就是已经访问过的位置,就会调用这个表示已经访问过,这个在栅栏或者定位区域都是使用到的
- (void)locationManager:(CLLocationManager *)manager didVisit:(CLVisit *)visit;
写的时候容易遗漏的就是设置代理:
Assigning to 'id<CLLocationManagerDelegate>' from incompatible type 'ViewController *const __strong'
出现这个错误:是因为有的时候还没有继承相应的代理。
一些区别:可以通过配置NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription来告诉用户使用定位服务的目的,这个设置的信息是在用户第一次打开应用的app的时候,会弹出的信息显示但是不同的是这个配置是必须的,如果不进行配置则默认情况下应用无法使用定位服务,打开应用不会给出打开定位服务的提示,也无法获取到位置信息,除非安装后自己设置此应用的定位服务。同时,在应用程序中需要根据配置对requestAlwaysAuthorization或requestWhenInUseAuthorization方法进行请求。
开发者可以在info.plist 文件中设置NSLocationUsageDescription 说明定位identifier目的
[Privacy -Location Usage Description] 这个在ios8可以不写
//这是用户的描述,在ios8之前写的。不过现在基本都是8以上了
我是楚简约,感谢您的阅读,
喜欢就点个赞呗,“❤喜欢”,
鼓励又不花钱,你在看,我就继续写~
非简书用户,可以点右上角的三个“...”,然后"在Safari中打开”,就可以点赞咯~