时间花在灯塔周围

时间:2014-09-29 14:17:47

标签: ios ibeacon estimote

在背景中识别信标(不在区域内)的时间花费应该是正确的方法。当应用程序在前台使用didRangeBeacons和一些业务逻辑时,我能够做到这一点。我在几个论坛上读到当应用程序在后台注册位置更新时范围确实有效,但我没有成功。我在plist中添加了UIBackgroundModes的位置更新密钥。

我正在使用estimote beacon和他们的sdk。

1 个答案:

答案 0 :(得分:1)

我在这里看到两种可能的解决方案:

  1. 侦听输入和退出区域事件,存储时间戳,然后使用它们计算退出时的时间跨度。如果您定义区域以使其仅包含一个信标,则监视该区域将等同于监视信标。唯一需要记住的是,iOS会同时监控20个区域的限制 - 因此该解决方案不会超过20个信标。

  2. 在后台使用范围。除了UIBackgroundModes之外,您还需要启动常规位置服务,即startUpdatingLocation

      

    Beacon测距通常在应用程序在前台运行时提供事件。 当您的应用处于后台时,只有在为应用启用了位置更新后台模式且标准位置服务正在运行时,此服务才会发送事件。

    (这是来自CLLocationManager class reference,部分"在背景中使用位置服务")

    请注意,在后台进行测距会比平时更耗尽电池寿命,Apple也需要使用背景模式的理由。除非您的应用用户有来自后台模式的某些价值,否则他们可能会选择拒绝它。总而言之,明智地使用背景范围! (:

相关问题