1

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

4

1 回答 1

3

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

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

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

  2. 将 Ranging API 与 Monitoring 相结合,并在后台尽可能长时间地进行测距(iOS 上最长 180 秒,无需特殊后台权限),然后在测距回调表明 CLBeacon 准确度字段是即时的时触发您的逻辑。

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

选项 2 更可靠,只要背景测距时间没有用完。如果手机的无线电在 40 米处触发开始测距,如果用户需要 180 秒以上才能立即接近,则测距时间用完,您无法触发,直到信标消失并重新出现以重置允许的测距时间.

于 2017-06-22T11:20:03.243 回答