我希望我的应用程序获得有关信标接近度(进入某个地区)的后台更新,但我只是阅读了Apple docs:
在iOS模拟器或设备上测试区域监控代码时,请注意区域事件可能不会在跨越区域边界后立即发生。为防止虚假通知,iOS在满足某些阈值条件之前不会发送区域通知。具体而言,用户的位置必须越过区域边界,远离边界移动最小距离,并在报告通知之前保持最小距离至少20秒。
理想情况下,我想使用不同的API - 一旦检测到信标(并且相反未检测到),就会告诉我,而不应用Apple的启发式。
我可以一直为所有可能的信标开启范围,但是我想象的那样可以快速杀死电池。
肯定有办法做到这一点,否则我有点看到iBeacon破坏的承诺:/
答案 0 :(得分:1)
这些文档具有误导性,因为它们旨在涵盖对地理围栏区域(例如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