This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nRF52 iBeacon Scannable with Services

I have a working iBeacon advertising a beacon UUID, Major, & Minor on a nRF52832. In addition, I also have a single BLE service (which has a single characteristic) defined. All is working. I can open a BLE scanner app (like Nordic's nRFConnect) and see the beacon. I can also connect to it, see the service I created, and read/write values to/from the service. Everything appears to be working correctly.

However,  I have also written an iOS app in Swift. And when I tell the BLECentralManager in the mobile app to scanForPeripherals with Services (and include my service UUID), the beacon is never discovered. Alternatively, I can change the code in my mobile app and use some different service UUIDs and scan and have no problem discovering the other BLE devices in my office.

The only difference is that none of those other BLE devices are acting as an iBeacon.

So my question is... If I'm broadcasting as an iBeacon, does that preclude me from also scanning for that device by looking for its service(s)?

  • Hi. 

    I talked to one of our iOS developers about this today. 

    The behavior you explain seems to be expected. If you are using the CoreBlueeoth library Apple will filter out iBeacons, causing you to never discover the iBeacon. However, the fact that the iBeacon is filtered out is suggesting that the iBeacon is working well.

    A suggestion from out iOS developer;
    If you instead use the CoreLocation library, you should be able to scan and discover iBeacons. 

    Best regards, 
    Joakim Jakobsen

Related