Search code examples
iosibeacon

iOS Inconsistent iBeacon Readings


I have a very simple barebones iOS app monitoring a single Estimote beacon. I add a CLBeaconRegion and run startMonitoringForRegion and startRangingBeaconsInRegion.

Inside - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region, I get the beacon information, roughly every second. But for some reason, every 15-45 calls, there's no beacons.

Anyone encounter this issue? While running it, I'm not moving anything, and the nothing's changing in the surrounding environment. Is this common for iOS to drop random detections?


Solution

  • This is not unusual, and is common at low advertising rates. Beacons may typically be configured to transmit between 1 to 10 Hz (different models have different ranges). If a beacon's advertisement is never seen by the Bluetooth chip in a one second cycle, you will not get that beacon included in the callback. Missing an advertisement can often be caused by radio noise or by a collision with a transmission from another bluetooth device. At 1 Hz transmission rates, this will be common. At 10 Hz, it should be exceedingly rare.