In my application I need to search the nearest beacons and detect their mac addresses to calculate the user exact location in the building. The question is that can we detect the closest beacon mac address from the iOS application without the beacon's UUID, major and minor values?
3 Answers
Have you tried ?
- (void)beaconManager:(ESTBeaconManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(ESTBeaconRegion *)region
{
self.beaconsArray = beacons;
ESTBeacon *beacon = [self.beaconsArray objectAtIndex:i];
NSLog(@"beacon.macAddress = %@",beacon.macAddress);
}

- 6,440
- 21
- 91
- 155
-
No, I don't, but thanks for the answer. Do we have to use the Estimote Beacon to use the EstimoteSDK or can we use any beacon for it? – ondermerol Dec 31 '14 at 11:27
-
2With `EstimoteSDK` you can find any beacons. – Krunal Jan 02 '15 at 05:34
Think about it: If you don't know the UUID of the beacon, how would you know it's location? A beacon doesn't know where it is. Someone must have physically put the beacons in their places, must have written down their locations, and must have made that location available to your app. In that case you would assume that they also wrote down the UUIDs.
Apple's idea is that you can't (easily) write an app that just finds any beacon. The beacons must be related to your app, otherwise they are none of your business. Let's say you write an app for a supermarket which uses the same UUID for all beacons. The app is supposed to ignore all other UUIDs.

- 51,477
- 5
- 75
- 98
-
Thanks for the answer. It explains detail architecture of beacon detection. – ondermerol Apr 03 '15 at 12:04
The generic iBeacon protocol, as supported by Core Location, does not expose the beacons's MAC address. You need to know the UUID that is configured in your beacon and set this in your beacon region.
Other beacons may expose additional information as per the other answer.

- 108,386
- 14
- 159
- 186
-
I am new in iBeacon technology and so I want to ask you another question: Beacon uses the bluetooth technology which is based on the MAC address so can't we get this mac address that belongs to the beacon? (maybe using the C++, another programming language) – ondermerol Dec 31 '14 at 14:17
-
1iBeacon does use BLE, but the Core Location framework does not expose the MAC and the Core Bluetooth framework filters iBeacon advertisements so they are not delivered to the delegate methods. You probably can get the beacon MAC on another platform but not on iOS. Reading the MAC doesn't really help you because you need to know the identity of your beacons beforehand to know where they are, by referencing some database. This is why you use the beacon UUID. – Paulw11 Dec 31 '14 at 19:16
-
I understood that CoreLocation and CoreBluetooth APIs do not allow us to see / identify the beacons. We have to know at least ProximityUUID for it. – ondermerol Jan 02 '15 at 09:07
-
But with CoreBluetooth I can get an UUID, is it same as the beacon's ProximityUUID? According to the research at [link](http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html) the UUID logged has nothing to do with the beacon's proximityUUID. I have made some work but we don't have the UUID, major, minor and MAC address of the beacons we have, we will get them on next week, then it will be more clear. Thanks for the help. – ondermerol Jan 02 '15 at 09:13
-
Also with iOS 8, Wi-Fi scanning behavior has changed to use random, locally administrated MAC addresses. Does this affect the beacons mac addresses? – ondermerol Jan 02 '15 at 09:26
-
The proximity UUID is not related to the Mac address. You set the proximity uuid yourself. An iOS device's Bluetooth address will change periodically for devices it isn't paired with or connected to. For iBeacons I cant see why you would want the MAC address - the proximity UUID is the value you should use – Paulw11 Jan 02 '15 at 09:30
-
The company that gives us the beacons only gave the mac addresses of them to help us for identifiying them. But they are wrong according to your explanation, we can not identify beacons with only the mac addresses (in fact, we can't get the Mac Address without proximity UUID.) – ondermerol Jan 02 '15 at 13:05
-
Normally beacons come with an app that allows you to configure the proximityuuid, major and minor values to your requirements - or if they use a fixed ProximityUUID then you can still configure the major and minor values. You need to be able to configure these values as you would typically register a single beacon region based on the UUID and the identify the specific beacon by major/minor. This is because there is a limit to the number of beacon regions you can monitor at once. – Paulw11 Jan 02 '15 at 21:29
-
Thank you, we have solved the problem. Now we can detect beacons with their advertisement datas (UUID, major and minor values). I want to mention that the CLBeacon class accuracy property does not give the right distance and changes every time unless the user location is still the same (beacons RSSI, signal strenght is not stable). As a result user location estimation is really hard by using beacons. – ondermerol Jan 23 '15 at 12:46