有很多方法可以使用这个类。一个基本的方法是在你的应用程序委托中初始化它,如下所示:
设置一个名为 locmgr 的应用程序委托中调用的属性 -
@property (nonatomic,strong) CLLocationManager *locmgr;
也符合应用委托的接口部分中的 CLLocationManagerDelegate
然后在 applicationDidFinish ...中初始化它。
self.locmgr = [[CLLocationManager alloc] init];
self.locmgr.delegate = self;
self.locmgr.distanceFilter = 1500.0f; //only update when location changes this much
self.locmgr.desiredAccuracy = kCLLocationAccuracyThreeKilometers; //change for better accuracy
[self.locmgr setPurpose:@"this app needs location services"];
[self.locmgr startUpdatingLocation];
然后添加委托回调
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
NSLog(@"location updated to new location:%@",newLocation);
//put your logic - maybe save it to a property and reference it when needed
}
然后在后台关闭它
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[self.locmgr stopUpdatingLocation];
}
我喜欢在应用程序委托前台/后台打开和关闭服务。听起来您可能不太经常需要位置服务。也许应用程序委托中的一个方法来启动和停止它。请记住,虽然在您开始更新位置服务之后可能需要一两秒钟,但它才能获得准确的值,所以这就是为什么有时最好在需要时打开它并抓住它。如果您正确设置过滤器,则不会导致过多的额外功耗。
我希望这会有所帮助,并且是您可以在项目中使用的东西。