我有一个创建时didExitRegion被调用,以执行在我的iPhone的地理围栏,将触发某些代码的代码。 然而,我发现,当我具备WiFi关闭该didExitRegion永远不会被触发。 是否需要Wi-Fi在iOS监测区域的变化? 我想要的,准确度为kCLLocationAccuracyHundredMeters。 我测试在iOS 6.1和iPhone 4。
这里是我的设置位置监测代码:
- (id)init {
self = [super init];
if (self) {
CLLocationManager *manager = [[CLLocationManager alloc] init];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyHundredMeters;
manager.distanceFilter = RADIUS/10.0;
manager.headingFilter = kCLHeadingFilterNone;
self.locationManager = manager;
self.authorizationStatus = [CLLocationManager authorizationStatus];
}
return self;
}
谢谢
iOS设备使用三种方法来发现用户位置。 从(通常)最准确到最准确的,他们是:
- GPS硬件
- 通过识别附近的WiFi网络
- 手机信号塔
如果应用程序不使用GPS或没有运行(即先前已经终止),则设备将尝试使用上述方法2和3来定位用户。 因此,该设备的定位用户(当GPS硬件不使用或有一个微弱的GPS信号)的能力依赖于WiFi网络和手机信号塔的可用性。 WiFi网络和手机信号塔多,定位精度越好。 因此,当用户进入或退出一个监视区域(即跨过“地理围栏”),这是不可能精确地预测何时如果在所有用户将接收该通知。 (当然,如果有问题的区域始终是相同的,该设备将更多或更少的定位在每个场合相同程度的精度的用户)。
下面是来自相关的文件位置感知编程指南 :
具体门槛距离是由硬件和定位技术是目前可用来确定。 例如,如果无线网络连接被禁用,区域监测是显著不太准确。 然而,出于测试目的,你可以假设的最小距离约为200米。
那么,是不是需要Wi-Fi的区域监测工作,但它使您的设备将在确定用户是否已经越过了区域的地理围栏更好的机会。
如果您关闭WiFi,位置精确度降低。 如果您没有GPS信号(一些建筑物内),你不会得到任何位置更新。 您是否尝试过这个,当你在室外,或者如果你使用的位置模拟器来测试?
此外,不需要WiFi以地理围栏功能,如果您有GPS(的iPhone或iPad SIMS)。
奇怪的怪异的东西,可以使用核心位置的不带WiFi发生。 为了帮助你的情况我会摆脱距离过滤器,用的东西,可以乱七八糟的,这是不是非常有帮助。 我可能会只使用kCLLocationAccuracyBest的任何东西,我需要建立一个地理围栏的精度要求。 使用其它精度和过滤器我有时会通过GPS仪器关掉了1000米,走一两分钟自我纠正。 如果这是太多了电池再建立一个系统,它会关闭和基于它是从栅栏走多远。