0

在背景中确定在信标[不在区域内]周围花费的时间的正确方法应该是什么。当应用程序在前台使用 didRangeBeacons 和一些业务逻辑时,我可以做到这一点。我在几个论坛上读到,当应用程序在后台注册位置更新时,测距确实有效,但我没有成功。我UIBackgroundModes在 plist 中添加了位置更新键。

我正在使用 estimote 信标及其 sdk。

4

1 回答 1

1

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

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

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

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

    (这来自CLLocationManager 类参考,“在后台使用定位服务”部分)

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

于 2014-09-29T15:35:59.307 回答