Question

I'm trying to get a better understanding of Bluetooth LE and been playing around with both iOS and Android's bluetooth stacks and various beacons (StickNFind, Estimote etc...)

  • On Android, when a device is discovered I get a raw "scan record" - a blob of data that I can parse myself to get the device's advertised data.
  • On iOS, this is parsed by iOS and presented as a dictionary.

Fair enough, except I was trying to use CoreBluetooth (ie: not location services) to read the advertisement data from an iBeacon and noticed that iOS seems to strip out the manufacturer specific advertisement data for iBeacon devices.

I realise I should probably be using Apple sanctioned ways for detecting iBeacons but it doesn't really fit our use case and wondering if there's a way around it.

Was it helpful?

Solution

EDIT: iOS does let you access the raw data for any Bluetooth advertisement that does not match the iBeacon format.

Unfortunately, iOS blocks access to the raw data of all BLE advertisements, including those of iBeacons. This makes it impossible to access the iBeacon identifiers with CoreBluetooth.

See details in this blog post.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top