iOS 定位服务

2019-08-09  本文已影响0人  JopYin

定位服务基本流程
1.服务开关:判断系统是否开启定位服务

BOOL isLocation = [CLLocationManager locationServicesEnabled];

2.权限申请:开启定位服务有4中方式 永不、使用时、总是、下次询问
获取状态是下次询问开启,则去申请开启权限

self.manager = [[CLLocationManager alloc] init];
if([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined){
        [self.manager  requestWhenInUseAuthorization];
    }

3.权限更新:当定位服务状态改变则调用下面代理方法 这个需要遵循代理协议CLLocationManagerDelegate
并实现代理方法

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
        //位置信息获取
        [self.manager startUpdatingLocation];
    }else if (status == kCLAuthorizationStatusDenied){
        //定位服务关闭
    }
}

4.开始位置信息获取

[self.manager startUpdatingLocation];

5.位置信息返回 系统调用代理方法

- (void)locationManager:(CLLocationManager *)manager
     didUpdateLocations:(NSArray<CLLocation *> *)locations {
    //地理信息
    CLLocation *location = [locations firstObject];
    
    CLGeocoder *coder = [[CLGeocoder alloc] init];
    
    [coder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        //地标信息
    }];
     [self.manager stopUpdatingLocation];
}

其他定位相关服务

上一篇下一篇

猜你喜欢

热点阅读