locationManager:didExitRegion: 应用程序运行时未调用
Posted
技术标签:
【中文标题】locationManager:didExitRegion: 应用程序运行时未调用【英文标题】:locationManager:didExitRegion: not called when app is running 【发布时间】:2011-06-02 00:30:50 【问题描述】:我有一个带有位置管理器的应用程序,它通过 startUpdatingLocation 运行。但是,如果它没有移动,那么我会停止更新位置,将当前位置标记为区域,然后像这样开始监控:
[locationManager stopUpdatingLocation];
CLRegion* region = [[CLRegion alloc] initCircularRegionWithCenter:self.currentLocation.coordinate radius:25 identifier:@"last_loc"];
[self.locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters];
[region release];
当应用程序完全关闭并退出该区域时,将调用 locationManager:didExitRegion 并继续我的快乐方式,如下所示:
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region
[self.locationManager stopMonitoringForRegion:region];
[locationManager startUpdatingLocation];
但是,如果应用正在运行,无论是在后台还是前台,应用都不会响应 locationManager:didExitRegion。我错过了什么?
【问题讨论】:
您是否在 iPhone 4 硬件上进行测试?只有 iPhone 4 HW 支持区域跟踪。 @timthetoolman,是的,iphone 4。 您是否为位置经理设置了代理? @timthetoolman,是的。我猜当我有更多时间时,我将不得不重新审视这个。 【参考方案1】:一定要初始化坐标属性。如果您希望坐标是用户的当前位置,请使用[your location manager].location.coordinate.latitude
和[your location manager].location.coordinate.longitude
作为初始化属性。如果您需要海拔高度,请包括[your location manager].location.altitude
、[your location manager].location.horizontalAccuracy
、[your location manager].location.verticalAccuracy
和[your location manager].location.timeStamp
。如果没有此信息,您将创建一个没有坐标但仍然存在的区域。本质上,它有一个名字,但没有真正的信息。
【讨论】:
以上是关于locationManager:didExitRegion: 应用程序运行时未调用的主要内容,如果未能解决你的问题,请参考以下文章