【问题标题】:iOS - Geofencing with WiFi turned offiOS - 关闭 WiFi 的地理围栏
【发布时间】:2013-03-30 20:14:51
【问题描述】:

我有代码在我的 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;
}

谢谢

【问题讨论】:

    标签: iphone ios geolocation wifi geofencing


    【解决方案1】:

    iOS 设备使用三种方法来发现用户位置。从(通常)最准确到最不准确,它们是:

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

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

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

    具体的阈值距离由硬件和当前可用的定位技术决定。例如,如果禁用 Wi-Fi,则区域监控的准确性会大大降低。但是,出于测试目的,您可以假设最短距离约为 200 米。

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

    【讨论】:

    • 绝对正确。即使您没有使用WIFI,也永远无法在系统设置中关闭wifi。
    • @Jacky - 我可以在 iOS 7 上关闭 iPhone 上的 wi-fi。我从底部边缘向上扫过,然后我就有了控制中心。然后我切换 wi-fi 符号(AirPort)。
    • 应用程序是否可以选择仅使用这三种方法中的某些特定方法?应用程序 Citymapper 表示其地理围栏不使用 GPS 芯片。这可能吗?
    【解决方案2】:

    如果没有使用核心位置的 wifi,可能会发生奇怪的事情。为了帮助您解决问题,我将摆​​脱距离过滤器,这可能会使事情变得混乱,而且不是很有帮助。我可能只会将 kCLLocationAccuracyBest 用于需要设置地理围栏所需的准确性的任何事情。对我来说,使用其他精度和过滤器有时会使 gps 仪表偏离 1000 米,并需要一两分钟才能自行纠正。如果电池电量过多,则设置一个系统,根据它与栅栏的距离来关闭和打开它。

    【讨论】:

      【解决方案3】:

      如果您关闭 WiFi,您的位置准确度会降低。如果您没有 GPS 信号(在某些建筑物内),您将不会获得任何位置更新。你在外面的时候试过这个吗,或者你用位置模拟器测试过吗?

      此外,如果您有 GPS(带 sim 卡的 iPhone 或 iPad),则地理围栏功能不需要 WiFI。

      【讨论】:

      • 嘿,是的,我一直在外面测试它,而不是在里面。我已经通过在我应该突破地理围栏的地方走动来测试它。当wifi关闭时,它永远不会违反地理围栏。我知道关闭 wifi 会降低定位精度,但不会降低到地理围栏不起作用的程度?
      • 这可能意味着一些事情。由于精度差异,您关闭WiFi时已退出围栏,Apple没有回调您。奇怪的事情可能发生。我会通过将您的精度设置为 10 米来测试它,然后使用没有 Wifi 的 GPS 和您的半径 100 米来设置您的地理围栏。并且测试 didExitRegion 被触发。
      猜你喜欢
      • 2014-11-24
      • 1970-01-01
      • 2013-06-14
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2017-04-20
      相关资源
      最近更新 更多