即使应用程序在相同的位置,信标的接近范围也会来回变化

信标接近范围将接近响应更改为近即时 – 即时,即使在ios设备保持在同一地点。

当我接近响应时,我打开一个视图。 我得到了接近的响应来回,近 – 即时然后近。 它一次又一次地显示出来的观点

我们如何解决这个问题。 有没有任何事件处理程序。

谢谢。

接近度和准确度值似乎相当“嘈杂”。 它也可以取决于你的环境。 水(也就是人们)吸收了蓝牙使用的频率,因此移动的人可能会产生影响,但是当两台设备都坐在我的桌子上时,我观察到的变化在1.2米到1.9米之间。

我认为你将不得不在应用程序中处理噪音。 一旦视图已经打开,您应该保持打开状态,直到灯塔“远”(或者您得到一个区域出口)一段时间。 如果状态转换回近或立即重置计时器。

您需要使用类似于以下的一些代码 –

-(void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { CLBeacon *beacon=beacons[0]; switch (beacon.proximity) { case CLProximityFar: if (self.farTimer==nil) { self.farTimer=[NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(farTimerFired:) userInfo:beacon repeats:NO]; } break; case CLProximityNear: case CLProximityImmediate: if (self.farTimer!=nil) { [self.farTimer invalidate]; self.farTimer=nil; } break; case CLProximityUnknown: NSLog(@"Beacon proximity is unknown"); break; } } -(void) farTimerFired:(NSTimer *)timer { CLBeacon *beacon=(CLBeacon *)timer.userInfo; NSLog(@"Beacon %@ is really far",beacon.proximityUUID.UUIDString); self.farTimer=nil; } 

理解接近度值只是基于无线电信号强度的估计值,所以这是由于噪声的预期行为,如@ Paulw11在他的回答中所说。

你可以做两件事来使接近度(和准确度)读数尽可能的稳定:

  1. select尽可能快的传输速率的iBeacon。 不同的ibeacons以不同的频率从每秒30次到每秒或更less的频率发送广告。 一般来说,更快的传输速率可以减less噪声距离估计,因为它们可以提供更多的无线电信号强度测量。 为了您的testing,请尝试一个基于iOS的iBeacon,比如定位iBeacon ,看看它是否有帮助。 已知每秒传输30次。

  2. 确保您的iBeacon已经正确校准。 这不会降低噪音,但它会确保您获得的读数平均是正确的。 如果没有正确校准,当设备稳固地处于紧邻区域时,您可能会看到直接和经常出现的跳跃,因为它计算的距离太远了。

除此之外,接近值的软件filter可能会像@ Paulw11所说的那样有所帮助,但它仍然不是完美的。 你只需要决定是否可以忍受你的用例的噪音。