从CLProximity获得距离

时间:2015-05-11 09:35:15

标签: ios objective-c ibeacon proximity

我正在使用目标c开发一个信标检测应用程序,我正在获得信标值,如下所示

CLBeacon (uuid:<__NSConcreteUUID 0x174223ee0> XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, major:0, minor:1, proximity:2 +/- 0.32m, rssi:-49)

在这个值中我希望得到+/- 0.32m值的接近度,但后来我正在访问接近值我没有得到它我怎么能访问这个值可以任何人帮助我这个我使用最新{{ 1}}

1 个答案:

答案 0 :(得分:6)

CLProximity不会以米为单位表示距离 它只会给你带来价值

CLProximityUnknown,
CLProximityImmediate,
CLProximityNear,
CLProximityFar

要查找以米为单位的距离(例如信标在15米范围内),您需要查看this文档。公式是第3页的第19页,基本上就是这样:

Received Signal Strength is related to distance using the equation below.
RSSI [dBm] = -10n log10 (d) + A [dBm] 

其中
A 是1米处的dBm接收信号强度 - 您需要在系统上校准此信号。因为您在已知距离进行校准,所以不需要考虑传输频率,这简化了等式。 (只需将iBeacon放置在1米范围内,并测量它的RSSI)

n 传播路径损失指数,即2.7到4.3(自由空间有n = 2作为参考,如果有墙,它将更大)。

d 是发件人与米的距离

所以你拥有除 d 之外的所有值,你需要使用上面提到的公式来计算 d

编辑:准确性
CoreLocation还为accuracy提供CLBeacon属性。 你是对的,以米为单位提供,但显示测量的准确度。

在你的情况下,它表明信标接近度是CLProximityNear,它精确到+/- 0.32m。

以下是有关accuracy

的文档
/*
 *  accuracy
 *
 *  Discussion:
 *    Represents an one sigma horizontal accuracy in meters where the measuring device's location is
 *    referenced at the beaconing device. This value is heavily subject to variations in an RF environment.
 *    A negative accuracy value indicates the proximity is unknown.
 *
 */
@property (readonly, nonatomic) CLLocationAccuracy accuracy;