2014-09-29 69 views
0

什么应该是正确的方法来识别在背景周围的信标[不在区域内]的时间花费。我可以在应用处于前台时使用didRangeBeacons和一些业务逻辑来做到这一点。我在几个论坛上看到,当应用在后台注册位置更新时,该功能可以工作,但我没有成功。我在plist中添加了UIBackgroundModes的位置更新密钥。在信标周围花费的时间

我正在使用estimote信标和它们的sdk。

+0

您是否已将NSLocationAlwaysUsageDescription密钥添加到.plist中? – 2014-09-29 14:24:22

回答

1

我看到这里有两个可能的解决方案:

  1. 监听进入和退出区域的事件,存储时间戳,然后用它们来计算在退出的时间跨度。如果您定义您的区域以使其仅包含一个信标,则监控该区域将相当于监控信标。唯一要记住的是,iOS强制同时监控20个区域的限制 - 所以这个解决方案不能扩展到20个以上的信标。

  2. 在后台使用测距。除了UIBackgroundModes之外,您还需要开始定期的位置服务,即startUpdatingLocation

    当应用程序在前台运行时,信标测距通常会传送事件。 当您的应用程序位于后台时,仅当为应用程序启用位置更新后台模式并且标准位置服务正在运行时,此服务才会传递事件。

    (这是来自CLLocationManager class reference,部分“使用在背景定位服务”)

    注意范围的背景将被耗尽的电池寿命比平常多,而苹果也需要理由使用背景模式。除非您的应用程序的用户来自背景模式,否则他们可能会选择拒绝。总而言之,明智地使用背景! (: