前段时间我为我正在进行的项目购买了三个信标。我想知道哪个灯塔是我最近的和近似距离(例如从0米到大约2米)。
我使用Core Location有以下代码:(剥离)
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region
{
NSLog(@"beacons %@", beacons);
}
这似乎有效,我在日志中得到了我的信标。按距离排序。但即使我只有一个灯塔附近。 (例如离我的设备大约50厘米)接近度从立即变为近,远。它只是"跳跃"。
有没有办法更精确地做到这一点?在我的代码中,我现在有一张支票,在那里我检查距离是否至少改变了一次"确认"改变。但即使这样,接近也是错误的。
答案 0 :(得分:0)
令人惊讶的是它会像那样跳来跳去。您当时是拿着设备还是坐在桌子上?理论上,无线电信号不应无缘无故地变得更强或更弱。也许你环境中的某些东西会干扰。
CLBeacon*
公开了一个属性NSInteger rssi
。这是信标的received signal strength indication。您可以在计时器上监视此信息以实时查看原始信号强度,但是您必须编写自己的算法来确定RSSI与接近度之间的相关性。
但是,看看与设备或环境的相互作用如何增加或减少信号强度可能是一项有趣的练习。
答案 1 :(得分:0)
我已经看到了一些立即/接近抖动,但不是你所描述的立即/近/远。听起来你可能有一个糟糕的灯塔。 (或iDevice上蓝牙天线上的连接松动... 或许Apple在最近的版本中打破了iBeacon API。)
您使用的是什么类型的设备,以及适用于哪种iDevice的iOS版本