降低didEnterRegion的阈值

Reducing the threshold of didEnterRegion

我目前正在开发一个应用程序,我希望我的应用程序能够在后台模式下检测到信标(立即)。根据我读过的文章,它不能用 didEnterRegion 完成,我应该在后台模式(位置更新)下使用 运行 测距。有没有直接降低didEnterRegion阈值的解决方案?或者我应该使用其他方法吗?如果是这样的话,它是否像 didEnterRegion 一样工作但 RSSI 范围有限?当我的phone进入该区域并且它被锁定并且屏幕关闭时它是否有效?

监控 API 使您无法控制接收检测回调的距离。当信标第一次进入无线电范围内时,您总是会收到回调,通常在 40 米左右。

有两种方法可以仅在近距离触发信标:

  1. 如果制造商支持,请在信标上配置较低的无线电传输功率。

  2. 将 Ranging API 与 Monitoring 相结合,并在后台尽可能长时间地进行测距(在没有特殊后台权限的情况下 iOS 最多 180 秒),然后在测距回调时触发您的逻辑表示 CLBeacon 精度字段是即时的。

选项 1 更简单,但不太可靠,因为它通常会在比您想要的更远的距离触发,有时即使在极近的距离内也根本无法触发。

方案2比较靠谱,只要背景测距时间不运行出来。如果 phone 的无线电在 40 米处触发以开始测距,如果用户花费超过 180 秒才能立即接近,则测距时间 运行 秒结束并且您无法触发,直到信标消失并重新出现以重置允许的测距时间。