【问题标题】:iphone - Doubts on geofencingiphone - 对地理围栏的怀疑
【发布时间】:2012-03-31 11:24:49
【问题描述】:

我听说过地理围栏,但我有一些疑问。希望你能回答其中的一些。

-它是 iOS 5.1 的新功能,但地理围栏和使用区域有什么区别?从我读到的内容几乎相同,电池消耗?

-为什么我找不到关于地理围栏的苹果文档?

-您如何定义区域?我可以通过网络服务远程添加它们吗?

谢谢。

【问题讨论】:

    标签: iphone geofencing


    【解决方案1】:

    地理围栏实际上从 iOS 4 开始就已经存在。您可以在 Apple Location Awareness Programming Guide 中找到有关它的文档。也称为“区域监控”。

    这些区域使用起来非常简单。创建具有中心点(纬度、经度)、半径和唯一标识符的 CLRegion。然后拨打-startMonitoringForRegion。当然,您需要注册一个 CLLocationManagerDelegate 来监听回调,-didEnterRegion-didExitRegion,但这也很容易做到。

    您无法远程添加它们。仅来自设备。在过去的几年里,我了解了一些关于他们的事情。所以希望这可以为您节省一些麻烦。

    • 并非所有设备都可以监控区域,因此请务必检查可用性
    • 有一个最小和最大区域大小。如果您在这些值之上或之下注册一个区域,它将默认为最小/最大值。最小值为 100M,最大值为地球大小的 1/3。相当大。
    • 1 台设备可以监控的最大区域数。这个区域“池”由所有应用程序共享,旧的栅栏将被清除,为新的栅栏腾出空间。所以要为此做好准备。最大数量接近 100。但在存折应用、提醒和其他应用之间共享...很快就会被烧毁。
    • 确保您的位置管理器代理只有一个实例,多个实例将为您提供多个代理呼叫,它们都在监听。

    地理围栏是向位置添加功能的好方法,无需任何开销的主动 GPS 和位置跟踪。根据我的经验,地理围栏在一直打开时不会造成明显的电池消耗。苹果已经很好地解决了这些问题。它们的精度不如主动 GPS,但它们足够接近。祝你好运。

    更新 这里的一些信息现在有点过时了。您可以监控的区域数量现在是 20 个,并且每个应用都有上限。另外,最小大小不是100M,可以更小,但是数字越小不保证精度。

    【讨论】:

    • 感谢您的回答,这对我很有帮助。您能否分享您对 CLRegions 的准确性的经验?地理围栏是否仍然需要最佳值,或者可能需要基于区域半径的其他值?
    • 我仍然使用最佳精度,对电池寿命的影响很小。我注意到,在 iOS 6 中退出事件的时间似乎有所延迟。一切仍然像宣传的那样工作,但退出事件可能不像以前那么准确了。
    • 我想问一下你所说的最小100m是什么意思。我目前正在使用地理围栏开发导航应用程序,但所需的精度大约是 10m。这是否意味着我必须使用另一种方式来做到这一点?
    • 10M 地理围栏可能会出现错误签入。以我的经验,100M(半径)是大多数情况下的最佳选择。如果您需要更高的精度(例如 10M),您可能需要使用 GPS,这会消耗电池寿命。
    【解决方案2】:

    “地理围栏”一直存在,从 iOS 4 开始以“区域监控”的形式出现。它使用距离检查来查看您是否进入了一个圆圈。 这不是真正的地理围栏,因为真正的地理围栏是检查一个点是否落在多边形中(称为多边形中的点)。

    从 iOS 6 开始,目前没有任何类似于使用多边形中的点的区域监控。要进行真正的地理围栏,您必须结合使用区域监控和 GPS。没有关于地理围栏的 Apple 文档,因为 CoreLocation 不支持它。

    如果您打算采用多点方法,我建议您使用光线投射。有一个 Objective-C 类可以很好地实现它。它叫做objc-BorderPatrol

    至于从 Web 服务发送栅栏,可以执行类似于 Twitter 的流式 API 的操作,但这可能过于密集。最好使用重要位置来更新您的围栏。如果您要从 Web 服务发送栅栏,我建议使用 MySQLPostGRE SQL,因为它们都具有非常好的地理空间扩展。

    一些注意事项: -> -[CLRegion containsCoordinate:] 永远不会被任何 CoreLocation 对象调用。所有的距离检查都是内部的。 -> 重要位置每 500m 或 5 分钟更新一次,以先到者为准。重要位置使用来自手机信号塔的 IP 地址来确定位置。 -> 地理围栏和区域可以重叠,请注意这一点。

    【讨论】:

    • objc-BorderPatrol 是否完美运行?我想将它包含到我的应用中
    • objc-BorderPatrol 不再维护。您最好编写自己的光线投射多点谓词。
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多