I have read a few articles and all of them talk about detecting the beacon when you are in the range and you cannot see the beacon without knowing its UUID. CBCentralManagerDelegate
only gives you the ability to detect the beacon when it is active. Is there any way to detect to beacon when it is in sleep mode but still broadcasting?

- 1,479
- 4
- 20
- 36
-
When you say "sleep mode" are you talking about the iOS device being in "sleep mode" or the beacon being in "sleep mode"? – davidgyoung Feb 27 '20 at 15:34
-
I just edited the title thanks. I meant the beacon. – jorjj Feb 27 '20 at 15:35
1 Answers
"Sleep mode" is not a standard concept when it comes to bluetooth beacons. Some beacon manufacturers have proprietary solutions that alter the behavior of their hardware beacons when they are motionless for a period of time. Typically, this makes such beacons stop advertising entirely until motion is again detected, and advertising resumes.
Three possibilities:
If a beacon hardware manufacturer has implemented a sleep mode as described above, it the beacon will not be advertising in sleep mode at all, and it is impossible to detect via any APIs on iOS.
If a beacon hardware manufacturer has implemented a sleep mode in another manner such that it still advertises the same packets (perhaps at a slower interval?) then it will be detectable using the same APIs as used to detect it when it is active.
If a beacon hardware manufacturer has implemented a sleep mode such that it advertises different packets in sleep mode, then different APIs may be needed to detect. But there is no way to know how to do this without documentation from the manufacturer.
Bottom line: you must consult the documentation provided by your beacon manufacturer to see how sleep mode was implemented (1-3 above) and know how to detect when it is in this mode.

- 63,876
- 14
- 121
- 204
-
It sends signals when it is in sleep mode. It actually works on Android when you set the UUID, but does not work on iOS. And the documentation of iOS for beacons doesn't specify the device state. documentation is here: https://developer.apple.com/documentation/corelocation/determining_the_proximity_to_an_ibeacon_device?language=objc – jorjj Feb 27 '20 at 21:24
-
Yes, It is true that iOS CoreLocation beacon APIs have no concept of a beacon sleep mode. That is the main point I was trying to make in my answer. You say "It actually works on Android". How precisely do you see that it works on Android? Did you write the code to make that happen? If so, what did you write? (Please show it.) – davidgyoung Feb 28 '20 at 01:11
-
one of my coworkers has written the code. I only know that he detects it after setting the UUID for the beacon because the beacon is broadcasting all the time. but I couldn't get the device on iOS in the same way as Android. – jorjj Feb 28 '20 at 15:08