Is it possible to differentiate "identical" CLBeacons? Meaning, CLBeacons with same UUID, major and minor, but coming from different devices?
In the CLBeacon Class Reference I can read, that there is a property accuracy which could be used for that. But, let's say, both devices are on top of each other in the same spot (probably not a real world situation), is this still a reliable argument?
This is not possible with CoreLocation APIs. If you have two different beacons with the same ProximityUUID/major/minor combination, each one will show up independently in an iOS ranging callback, but you will have no way of knowing which is which because no other identifiers are available that can distinguish them.
Although the internal CoreLocation implementation is not published, my tests suggest that CoreLocation keys unique beacons off of the Bluetooth Mac address, allowing it to realize that two different beacons broadcasting the same identifiers are not just one beacon. Unfortunately, CoreLocation does not allow you to read this Mac address.
And while you can read the Mac address (or at least a derivation of it) with CoreBluetooth APIs, you cannot read the iBeacon identifiers, so it is impossible to correlate the two. (See: http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html )
The bottom line is that if you want to distinguish two iBeacons on iOS, you must give therm different identifiers.