如何在不使用 locationManager didEnterRegion 的情况下获取 iBeacons 的后台更新

How to get background updates for iBeacons without using locationManager didEnterRegion

我想获取我的应用程序的后台更新以获取信标接近度(进入一个区域),但我刚刚在 Apple docs 上看到:

在 iOS 模拟器或设备上测试区域监控代码时,请注意区域事件可能不会在区域边界被跨越后立即发生。为了防止虚假通知,iOS 在满足某些阈值条件之前不会发送区域通知。具体来说,用户的位置必须跨越区域边界,离开边界最小距离,并在通知上报前至少保持该最小距离20秒。

理想情况下,我想使用一种不同的 API - 一种在检测到信标(反之未检测到)时立即告诉我的方法,而不应用 Apple 的启发式方法。

可以一直为所有可能的信标打开测距,但我想这会很快耗尽电池电量。

当然有办法做到这一点,否则我觉得 iBeacon 的承诺有点破灭了:/

这些文档具有误导性,因为它们旨在涵盖对地理围栏区域(例如 CLCircularRegion)以及信标区域(CLBeaconRegion)的监控。您描述的启发式方法仅适用于地理围栏。

对于信标,进入区域时的检测时间因硬件而异。在 iPhone 4S 设备上,信标区域进入事件最多需要 15 分钟(信标扫描每 15 分钟一次。)在 iPhone 5+ 设备上,由于硬件辅助,检测通常在一秒内完成,但如果所有辅助插槽都已占用(最多 30 个区域),它会退回到类似于 iPhone 4S 的行为。

还应注意,如果测距处于活动状态,则检测时间在一秒内。

在此处阅读更多详细信息:

http://developer.radiusnetworks.com/2014/03/12/ios7-1-background-detection-times.html

http://developer.radiusnetworks.com/2015/04/21/max-beacon-regions-ios.html