//
// ViewController.m
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<CLLocationManagerDelegate>
/**
* 位置管理者
*/
@property(nonatomic,strong) CLLocationManager *lM;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
}
/**
* 创建位置管理者
*/
- (CLLocationManager *)lM
{
if (_lM == nil) {
// 创建
_lM = [[CLLocationManager alloc] init];
// 设置代理
_lM.delegate = self;
// 每隔多少秒定位一次
// _lM.distanceFilter = 100;
// 定位精确度(精确度越高越耗电,定位所需时间越长)
/*
kCLLocationAccuracyBestForNavigation 最适合导航的
kCLLocationAccuracyBest 最好的
kCLLocationAccuracyNearestTenMeters 10米
kCLLocationAccuracyHundredMeters 100米
kCLLocationAccuracyKilometer 1000米
kCLLocationAccuracyThreeKilometers 3000米
*/
_lM.desiredAccuracy = kCLLocationAccuracyBest;
}
return _lM;
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
// 使用位置管理者,开始更新用户位置
// 默认只能在前台获取用户位置
[self.lM startUpdatingLocation];
}
#pragma mark - CLLocationManagerDelegate
/**
* 更新到位置之后就会调用
*
* @param manager 位置管理者
* @param locations 位置数组
*/
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
NSLog(@"定位到了");
// 拿到位置,做一些业务逻辑操作
//...
// 停止位置更新
[manager stopUpdatingLocation];
}
@end
如果需要在后台也定位,需要做如下配置:
其他:
本文介绍如何在iOS应用中实现定位服务,包括位置管理器的创建、更新用户位置的方法及后台定位所需的配置。

被折叠的 条评论
为什么被折叠?



