iphone - iOS - WiFi 地理围栏关闭

标签 iphone ios geolocation wifi geofencing

我有在我的 iPhone 上创建地理围栏的代码,它会在调用 didExitRegion 时触发一些要执行的代码。但是,我发现当我关闭 WiFi 时,didExitRegion 永远不会被触发。 在 iOS 上监控区域更改是否需要 WiFi? 我期望的精度设置为 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 设备使用三种方法来发现用户位置。从(通常)最准确到最不准确,它们是:

  1. GPS 硬件
  2. 通过识别附近的 wifi 网络
  3. 信号塔三角测量

如果您的应用不使用 GPS 或未运行(即之前已终止),设备将尝试使用上述方法 2 和 3 来定位用户。因此,设备定位用户的能力(当 GPS 硬件未使用或 GPS 信号微弱时)取决于 wifi 网络和手机信号塔的可用性。 wifi 网络和基站越多,定位精度就越高。因此,当用户进入或离开监控区域(即穿过“地理围栏”)时,无法准确预测用户何时会收到通知(如果有的话)。 (当然,如果所涉及的区域始终相同,则设备每次都会或多或少地以相同的准确度定位用户)。

这是来自 Location Awareness Programming Guide 的相关文档:

The specific threshold distances are determined by the hardware and the location technologies that are currently available. For example, if Wi-Fi is disabled, region monitoring is significantly less accurate. However, for testing purposes, you can assume that the minimum distance is approximately 200 meters.

因此,区域监控不需要 wifi,但启用它后,您的设备将有更好的机会确定用户是否越过区域的地理围栏。

关于iphone - iOS - WiFi 地理围栏关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884330/

相关文章:

ios - 滚动到启用分页的 UICollectionView 中的页面

ios - 如何初始化另一个 View Controller 的值

ios - restkit中的 "attribute"和 "property"有什么区别

ios - 地理围栏可以包含许多其他地理围栏吗

php - 在 Woocommerce 中添加除特定国家/地区以外的内联 CSS

iphone - IOS:在父 View 上移动 subview

iphone - Paypal 错误: FILE SYSTEM CHECK FAILED

ios - 如何使 iOS Charts LineChartView 显示为样条曲线(平滑线图)?

iphone - 具有 iOS 3.2 的 iPad 与 iPhone iOS 3.0 的兼容性

php - 两个地址之间的距离