I developed iOS app that is using startMonitoring(for: region) method to detect region entry and exit events via didEnterRegion and didExitRegion delegate methods.
Region monitoring worked for years and stopped working recently.
- Now my app “magically” starts working for few minutes when I open apps that are used to manage beacons(set UUID, major , minor – I am using KBeacon and FeasyBeacon iOS apps)
- If my app were faulty, it would NOT start working just by opening the Kbeacomn or FeasyBeacon apps. If my code were incorrect, the app would NEVER work until the code is fixed.
- Apple support states that startMonitoring still works, despite the fact that it is Deprecated,and they agree that if my app was broken it would not start working when I open beacon management apps
That leaves the beacons(my app worked with these same beacons for years). Now I am using multiple apps to make sure beacons are advertising proper iBeacon signal such as Beacon Scope, BT Inspector, LightBlue,and it seems all beacons are only in iBeacon mode, they advertise UUID, major , minor, they only say iBeacon for format. I did not update beacon firmware
Now Apple Tech support says
- that the fact that KBeacon/FeasyBeacon apps are able to see the beacons and have the information means that the beacons are not in iBeacon mode.
- iBeacon is required to only send ADV_NONCONN_IND packets, which will instruct anyone scanning to not send a SCAN_REQ (Scan Request).
- A Scan Request is a specific BLE command, and by definition of the iBeacon spec, the beacon is required to be non-scannable.
- Also they say the issue might be in that these are dual beacons that can advertise ibeacon or other formats – the fact that kBeacon is able to see the advertising from the beacons despite not using CoreLocation means that either the beacons are not advertising as iBeacon until kBeacon is launched, or they are advertising in such a way that the iBeacon advertising is not compliant enough to be recognized.
My Questions
- Does anyone know / have any idea why my app starts detecting regions only after I open KBeacon or FeasyBeacon apps? These beacon apps sendScan Request,a nd beacons send Scan response, and it seems iOS is able to see feacons only after beacons send Scan Response back, but iOS should be able to see beacons during nornal scan
- Any recommendation on “sniffer” apps that could help me figure out sniffer log and what’s being advertised, as this is the only sure way to figure out what is going on with KBeacon/FeasyBeacon apps, iOS and iBeacon beacons.
- What does it mean that iBeacon should be non-scannable?
- Can anyone point me to books / resources on BLE and iBeacon specification?
Thank you