我正在尝试使用iPad应用程序(iPad Air,在前台运行的应用程序,而非背景)和几个信标(来自Estimote和Bluecat)来开发室内和室外游戏,人们必须按照正确的顺序扫描信标。信标被放置在5 x 5m的区域内,参与者必须接近它们(在近距离范围内)。
然而,发现信标在CLProximityImmediate
范围内可能需要几秒钟(这很好)到30-60秒(这太长),即使在iPad实际接触信标的情况下也是如此。根据我的实验,信标的范围大约为每秒一次,但报告的是直接范围,并且经常报告CLProximityUnknown
。
我的测距设置如下(我处于测距模式,进入/退出区域没有打开/关闭):
CLBeaconRegion *estimoteRegion = [[CLBeaconRegion alloc] initWithProximityUUID:estimoteUUID identifier:estimoteIdentifier];
CLBeaconRegion *bluecatRegion = [[CLBeaconRegion alloc] initWithProximityUUID:bluecatUUID identifier:bluecatIdentifier];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
[self.locationManager startRangingBeaconsInRegion:estimoteRegion];
[self.locationManager startRangingBeaconsInRegion:bluecatRegion];
测距事件处理程序与下面的类似:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region {
for(CLBeacon *beacon in beacons) {
if (beacon.proximity == CLProximityImmediate) {
// Handle it
break;
}
}
我已经尝试了Core Location和Estimote SDK,但它们的结果非常相似。
您是否有任何关于如何加速信标即时距离感应的实用技巧? 应该更深入的核心蓝牙承诺任何重大的改进?
答案 0 :(得分:2)
您提到的延迟可能是由四个因素引起的:
为了加快上述速度,首先要确保正确校准。接下来,您可能希望abandon iOS' distance estimation in favor of your own,基于每次测距回调获得的RSSI读数。优点是你可以摆脱滚动平均值造成的20秒滞后。但真正的权衡是你会看到你的距离估计变化更大。当你离你想远的时候会导致误报。