#import "ViewController.h"
// 用来处理位置相关的事件
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
// 定位服务的入口
// CLLocationManager 主要处理 位置/方向/区域 相关的事件
@property (nonatomic, strong) CLLocationManager *manager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// iOS8之后需要请求申请用户授权
if ([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
// 必须在Info.plist文件当中做相关配置
[self.manager requestWhenInUseAuthorization]; // 前台 (处于使用状态)
// [self.manager requestAlwaysAuthorization]; // 任何时刻都能用
}
// 开始更新用户位置
[self.manager startUpdatingLocation];
}
#pragma mark - CLLocationManagerDelegate
// 当前App的授权状态改变时触发
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{
/**
// 用户还没有做出决定
kCLAuthorizationStatusNotDetermined = 0,
// 当前App无法获取授权,用户无法改变
kCLAuthorizationStatusRestricted,
// 用户拒绝
kCLAuthorizationStatusDenied,
// 任何时候都可使用
kCLAuthorizationStatusAuthorizedAlways NS_ENUM_AVAILABLE(NA, 8_0),
// 在前台时可用
kCLAuthorizationStatusAuthorizedWhenInUse NS_ENUM_AVAILABLE(NA, 8_0),
// 废弃, 相当always
kCLAuthorizationStatusAuthorized NS_ENUM_DEPRECATED(10_6, NA, 2_0, 8_0, "Use kCLAuthorizationStatusAuthorizedAlways") __TVOS_PROHIBITED __WATCHOS_PROHIBITED = kCLAuthorizationStatusAuthorizedAlways
*/
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
NSLog(@"授权成功");
}
}
/**
当位置信息更新时触发
*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
// 非常频繁的调用
// locations 包含位置的信息,至少一个
// locations中最新的用户位置信息保存在lastOjbect
// CLLocation 包含地理位置,海拔,记录时间的信息
CLLocation *location = locations.lastObject;
NSLog(@"当前位置: 纬度:%f, 经度: %f", location.coordinate.latitude, location.coordinate.longitude);
// 停止更新用户位置
[self.manager stopUpdatingLocation];
}
#pragma mark - Getter & Setter
- (CLLocationManager *)manager
{
if (_manager == nil) {
_manager = [[CLLocationManager alloc] init];
// 通过代理进行的数据回调
_manager.delegate = self;
}
return _manager;
}
@end
实用知识:CoreLocation的使用(位置获取)
最新推荐文章于 2017-09-16 19:20:08 发布