Since iBeacon signal is just a BLE broadcasting with a predefined BLE profile, I think I can write an iOS App which scan the BLE broadcasting signals and analyze whether any found signal is iBeacon. But how to do that?
- How to scan all BLE broadcasting signals around?
- How to distinguish whether a BLE broadcasting signals is iBeacon?
According to me, You can't find all beacons that are broadcasting advertise data, regardless of their proximity UUID.
This can be only done in Mac app, not in iOS.
This will help you better understand Click here
And this is the link for open sourced beacon scanning app in working state for mac: Click here
The answer by @davidgyoung is not entirely correct. On iOS you can subscribe to enter/leave reigning, but you have to know the UUID beforehand.
However, you can use regular Bluetooth device scanning for detecting all Bluetooth devices. You can then look at the advertisement data to see if it is actually using a iBeacon identifier and list its iBeacon UUID.
Unfortunately on iOS you must supply a ProximityUUID to see iBeacons. On Android you can see all iBeacons regardless of UUID. Further, on iOS you can not use CoreBluetooth APIs to what advertisements are iBeacons.
See here for details.