蓝牙 RSSI 计算距离 https://blog.csdn.net/njchenyi/article/details/46981423
利用 CoreLocation.framework 很容易扫描获得周边蓝牙设备,苹果开源代码 AirLocate 有具体实现,下载地址:
https://developer.apple.com/library/ios/samplecode/AirLocate/Introduction/Intro.html
所获得的 iBeacon 在 CoreLocation 里以 CLBeacon 表示,其中有 RSSI 值(接收信号强度),可以用来计算发射端和接收端间距离。
计算公式:
d = 10^((abs(RSSI) - A) / (10 * n))
其中:
d - 计算所得距离
RSSI - 接收信号强度(负值)
A - 发射端和接收端相隔 1 米时的信号强度
根据上述公式计算可得到下表(A=-70,n=2.0)
可以看出,距离差不会因为设备 RSSI 基准值的变化而变化。如果基于 1 米距离采集到了设备的 RSSI 基准值,以后需要限制设备只能在 3 米范围内才可以进行交互通讯的话,只需判断设备 RSSI 值与其距离 1 米时测得的 RSSI 基准值的差距是否小于 22,小于 22 即可认为设备在 3 米以内。