When setting the beacons transmitting power to 3.5 meters, I’m still able to detect the beacons exit and entry events from 10 meters. While when setting the transmitting power to -30db (1.5 meters), I’m unable to detect the beacons when walking passed them, only when I stay in front of them for a while. Is this normal or is this affected by the phones bluetooth power?
Is there anyway to trigger the entry event when walking next to them (1-3 meter), but not from (7-10) meter?
That’s feedback we do hear from time to time, but sadly, there’s no “easy fix” available at the moment.
The power level settings come from the BLE chip we use, Nordic’s nRF51, and we’re limited to whatever settings they make available. The -30 dBm is a “special” level, dubbed “whisper mode,” so it’s actually designed only to be detectable at very close proximities.
The -20 dBm on the other hand … The “3.5 m range” is just an estimate, so the actual mileage may vary. It also takes just a single spike in RSSI for the iOS to register an enter event. Is the 10 m you’re experiencing with a clear line-of-sight to the beacon, phone out of the pocket? If so, you might want to test different conditions as well.
Also, make sure the beacon is not mounted on any kind of metallic surface, backplate, etc.—it would reflect the signal, which in some cases we’ve heard of resulted in 2x range than the average.
If the result is still more than you’d want, I have two more ideas:
-
“Hardware solution”—wrap a beacon in metal foil, or put it in a metal container. Anything to attenuate the signal.
-
“Software solution”—upon your app being woken up with an “enter” event, don’t immediately fire your notification or other business logic. Instead, start ranging for the beacon that the user has just passed by, watch the “accuracy” property (the lower the value, the closer to the beacon you are), and tune your code to only fire the business logic in accordance to its desired value.
Ordinarily, your app will only have ~ 10 seconds to do that in the background before iOS puts it back to sleep—but you can extend it to up to 3 minutes by starting a background execution task.
Thank you for your fast response.
We’ve already tried to range for the beacons when entry event is reached, but the ranging isn’t behaving in the same way on different devices (operating systems). We see android devices displaying they are 2 meters away from a beacon (that is 6 meters away) and ios displaying 10 meters.
The monitoring for beacons works fairly well on android and ios untill 8, but not so good on ios 9 and android 6. iOS 9 devices have some delay when detecting beacons, have you experienced this before?
Our goal is to let the user receive a notification when he passes two beacons within some time. In that way we know the direction of the user. Could it be that the signals of the beacons interrupt each other? When you step in range of the first beacon, the device also receives directly in range of the second beacon, but they are 3 meters from each other and range is -30db each.
Thanks in advance
Would indoor location be a solution? Can we place four beacons and detect when the user passes through those four beacons?
Is indoor location only possible in the foreground or also in background? Not needed when app is killed.