关注

如何实现较近距离时才触发事件?

iBeacon 的信号强度已经调节到最低了,但还是在几米外就有信号。如果我想实现一个近距离才能触发事件的效果,要怎么实现?

这里有几种解决方案:

1. 通过判断 iBeacon 的 RSSI 值,如果某个 iBeacon 信号覆盖范围为 30 米,在它 1 米处检测到的信号是 -50,3 米时是 -70。这时我们可以判断当 iBeacon 信号强度大于-50时才触发,就可以实现近距离才触发事件的效果了。

2. 通过 KVO 监听 Proximity 值,来进行判断。Apple 为 iBeacon 设定了 4 个范围值:Unknown(未知), Immediate(1米以内), Near(1-3米), Far(很远)。我们只要 KVO 的方式监听 iBeacon 的Proximity 值,当 Proximity 值变为 Immediate 时在触发对应的动作。KVO 实现方式参照 Github

3. 通过调整 iBeacon 设备的功率,当功率调整到较低的状态时,云子信号的覆盖范围会随之变小。这种方式的优点是开发简单,只需要修改硬件功率就可以满足改变覆盖范围的需求。缺点是范围可调性差只能是几个固定的值,同时将发射功率改小,对于 iBeacon 的巡检与监控都会带来麻烦。目前不建议将 iBeacon 设备功率修改过低。

 

评论

由 Zendesk 提供技术支持