0

I'm trying to filter beacons to retain only iBeacons during beacons discovery. On Android we could use a call to the following from a discovered beacon (result):

result.ScanRecord.GetManufacturerSpecificData(0x004C);

I'm trying to do the same thing on iOS, but it seams that I have only access to this information with CBCentralManager... The problem beeing that I'm using CoreLocation to get access to the high and low words values from the advertising data...

Should I use the explanation from here to do the decoding? Am I missing something? I found it strange that I need to use 2 sets of API to have all the data that I need.

  • iBeacons are accessed using Core Location, not Core Bluetooth since they are about identifying the user's location. iBeacon are supported natively by iOS Core Location, so you do not need to worry about Bluetooth advertisement data. You should look at `CLBeaconRegion` and using [beacon identity constraints](https://developer.apple.com/documentation/corelocation/clbeaconregion/3240605-init) - You must specify the UUID of the beacons you are interested in. You can optionally specify the major and minor values you want. – Paulw11 Mar 20 '23 at 11:18
  • As @paulw11 says above, there is no need to do any beacon type filtering with CoreLocation as those APIs automatically filter or iBeacon. Regarding CoreBluetooth for reading manufacturer data, that only works for non-iBeacon packets as covered in my answer to a similar question [here](https://stackoverflow.com/a/75759113/1461050) – davidgyoung Mar 20 '23 at 11:56

0 Answers0