CoreBluetooth hides advertising frame data for iBeacons
| Originator: | spector | ||
| Number: | rdar://15606232 | Date Originated: | 06-Dec-2013 11:46 AM |
| Status: | Open | Resolved: | |
| Product: | iOS SDK | Product Version: | 7.0.x |
| Classification: | Serious Bug | Reproducible: | Always |
Summary: It is not possible to retrieve iBeacon advertising frames using CoreBluetooth. This makes it impossible to write any number of management applications where the end user does not know the explicit Proximity UUID(s) for the beacon(s) in their environment. This intentional breakage of the CoreBluetooth framework also stops any number of discovery services, interactive games, and more from being written and will in the long run destroy the value proposition Apple has tried to foster with this technology. It should be noted NO SUCH RESTRICTION exists in the Android world -- which is forcing many developers to reconsider redirecting their BLE/Beacon projects to that platform. Steps to Reproduce: 1. Instantiate a CBPeripheral session with a BLE device 2. Receive advertising packets 3. Try to read the data behind the key kCBAdvDataAppleBeaconKey Expected Results: CoreBluetooth should return any and ALL data from a BLE devices that are discoverable. Security and auth concerns are already addressed by other areas of the BLE specifications and protocols, so intentionally hiding these advertising data is "security though obscurity" at best. Actual Results: No data is returned when accessing the kCBAdvDataAppleBeaconKey because it is being explicitly filtered by CoreBluetooth Version: iOS 7.0x. Notes: Configuration: Attachments:
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!
related issue
rdar://14918495
key
If you look at possible implementations on the mac: https://github.com/liamnichols/iBeaconScanner (see https://github.com/liamnichols/iBeaconScanner/blob/master/BLEScanner/AppDelegate.m for the actual parsing)
There, the key is actually kCBAdvDataManufacturerData and contains the raw advertising Bytes.