在后台确定信标周围(不在区域内)花费的时间应该是正确的方法。当应用程序使用didRangeBeacons和一些业务逻辑在前台时,我能够做到这一点。我在一些论坛上读到,当应用程序在后台注册位置更新时,测距确实有效,但是我没有成功。我在plist中添加了UIBackgroundModes
的位置更新密钥。
我正在使用estimote信标和他们的SDK。
最佳答案
我在这里看到两种可能的解决方案:
侦听进入和退出区域事件,存储时间戳,然后使用它们计算退出时的时间跨度。如果将区域定义为仅包含一个信标,则监视该区域将等同于监视该信标。唯一要记住的是,iOS限制了同时要监视的20个区域的限制-因此此解决方案不能扩展到20个以上的信标。
在后台使用范围。除了UIBackgroundModes
,您还需要启动常规定位服务,即startUpdatingLocation
。
当应用程序在前台运行时,信标范围调整通常会传递事件。当您的应用程序在后台运行时,仅当该应用程序启用了位置更新后台模式且标准位置服务正在运行时,此服务才会传递事件。
(来自CLLocationManager class reference的“在后台使用位置服务”部分)
请注意,在后台进行测距会比平时消耗更多的电池寿命,并且Apple还要求使用后台模式的理由。除非从后台模式为您的应用程序用户带来一些价值,否则他们可能会选择拒绝它。总之,明智地使用背景! (:
关于ios - 在信标周围花费时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26102059/