美文网首页
获取用户位置信息-LYXLocationManager

获取用户位置信息-LYXLocationManager

作者: 风_iOSer | 来源:发表于2017-10-23 17:08 被阅读0次

    背景

    在我们使用app的过程中,很普遍的见到请求我们所在的位置信息,用来匹配附近,同城的展示信息。为以后重复造轮子,方便使用,抽出来封装了LYXLocationManager. 里面的api可以方便的获取用户的详细位置信息,独立的county, province, city, district等信息获取。

    1.iOS8.0之后需配置info.plist文件:

    Privacy - Location When In Use Usage Description
    Privacy - Location Always Usage Description
    

    2.请求用户授权:

     + (void)lyx_requestAlwaysAuthorization{
         if([UIDevice currentDevice].systemVersion.floatValue >= 8.0){
             [[LYXLocationManager sharedManager].lyx_locManager requestAlwaysAuthorization];
         }
     }
    
    + (void)lyx_requestWhenInUseAuthorization{
        if([UIDevice currentDevice].systemVersion.floatValue >= 8.0){
            [[LYXLocationManager sharedManager].lyx_locManager requestWhenInUseAuthorization];
        }
    }
    

    3.请求获取用户位置信息:

      - (void)updateLocation{
          if ([CLLocationManager locationServicesEnabled]) {
              if ([UIDevice currentDevice].systemVersion.floatValue >= 9.0) {
                  [[LYXLocationManager sharedManager].lyx_locManager requestLocation];
              }else if([UIDevice currentDevice].systemVersion.floatValue >= 8.0){
                  [[LYXLocationManager sharedManager].lyx_locManager startUpdatingLocation];
              }
          }
      }
    

    4.在代理方法中反编码用户经纬度信息,获取用户位置:

    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
        CLLocation *location = [locations firstObject];
        NSLog(@"%@", location);
    
        // 反地理编码(经纬度---地址)
        [[[CLGeocoder alloc] init] reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
            if(error == nil)
            {
                CLPlacemark *pl = [placemarks firstObject];
                self.completeBlock ? self.completeBlock(pl.locality,nil) : nil;
            }else
            {
                NSLog(@"错误");
                self.completeBlock ? self.completeBlock(nil,error) : nil;
            }
        }];
    }
    

    集成方式:

    1.由于比较轻量,下载下来,当做一个工具类,导入项目中。
    2.在需要使用的vc中导入下面的头文件
    #import "LYXLocationManager.h"
    
    3.使用下的方法获取用户位置信息
     //请求授权
    [LYXLocationManager lyx_requestWhenInUseAuthorization];
    [LYXLocationManager lyx_requestAlwaysAuthorization];
    //请求用户位置信息
    [LYXLocationManager lyx_requestLocationWith:^(NSString *locationDetail, CLPlacemark *placemark, NSError *error) {
        if (error == nil) {
            self.locationLabel.text = locationDetail ?: @"未获取到位置信息";
        }else{
            self.locationLabel.text = @"获取位置错误";
        }
    }];
    

    最后demo地址奉上:

    https://github.com/liuyunxin2014/LYXLocationManager.git

    相关文章

      网友评论

          本文标题:获取用户位置信息-LYXLocationManager

          本文链接:https://www.haomeiwen.com/subject/mrvauxtx.html