Region monitoring/ranging not working without minor

I’m developing an app that uses 20+ Estimote beacons. I’m using

[[CLBeaconRegion alloc] initWithProximityUUID:ESTIMOTE_PROXIMITY_UUID major:SOME_MAJOR identifier:@“SOME_IDENTIFIER”];

to create the region. With three beacons (early development stages) it worked just fine, but now that I’ve received all 20+ beacons, it only recognises a couple of them. All my beacons have the same UUID and major (triple check), and monitoring/ranging works if I add any beacon minor to the region, but it doesn’t without the minor. Any ideas? Thanks.

Regions and encompass multiple beacons (like the one you’ve shown, which matches all the beacons with Estimote UUID and the major, regardless of the minor) behave a little differently in monitoring and ranging.

In ranging: you should get a call to your didRangeBeacons with a beacons array with all the matching beacons that are in range.

In monitoring: the region is treated as a “whole”, i.e.:

  • when there’s at least one matching beacon in range, the region’s state is “inside”
  • when all of the matching beacons are out of range, the state’s “outside”

This means you won’t get an exit unless you’re out of range of all the beacons, and you’ll get an enter only for the first matching beacon the range of which you enter.