I've been playing around with using iOS devices as both broadcasters and receivers using the new iBeacon API's in iOS 7.
The docs don't go into detail at which distances the receiving device should see each proximity indicator, and specifically calls them out as "relative". When experimenting a with a demo app, I observed these distances (iPhone == receiver, iPad == broadcaster):
Far - 50 feet?
Near - 2-3 feet
Immediate - 2 inches
These seemed really small to me, and there is perhaps a hint in the CLBeaconRegion class reference, which allows you to specify the signal strength of your device from 1m away.
peripheralDataWithMeasuredPower:
Retrieves data that can be used to advertise the current device as a beacon.
Parameters
measuredPower
The received signal strength indicator (RSSI) value (measured in decibels) for the device. This value represents the measured strength of the beacon from one meter away and is used during ranging. Specify nil to use the default value for the device.
My amateur calibration yielded -60, which I set and re-tested:
Far - hundreds(ish) feet
Near - ~50 feet
Immediate - 1 meter (slightly less)
Are the results from my second test the "ideal" ranges according to Apple? They are really far away from the "default" setting I experienced in the first test.
Or should I perhaps consider these ranges "calibratable" depending on my needs?
The positioning accuracy of the iBeacon-based method is RMSE 2.75 m. When the smartphone is held steadily, the fusion positioning tests result in RMSE of 2.39 and 2.22 m for the two routes. In addition, the other tests with orientation noises can still result in RMSE of 3.48 and 3.66 m.
How does iBeacon work? iBeacon uses Bluetooth low energy technology to transmit a unique ID that can be recognized by a mobile app or operating system on a smartphone.
Today, beacon technology has finally transitioned from a push marketing strategy to an opt-in strategy. The technology is being deployed by various industries for multiple use-cases, ultimately benefiting consumers.
From what I understood of the API is that there is never a guarantee on actual distance, you should not use the readings to be considered an accurate measurement. The proximity is rather used to determine the relative distance between different beacons so that you can respond accordingly based on your applications requirements.
With that said, Apple definitely draws a gray area in their documentation. The description of measuredPower
is intriguing and easily instils the thought that you can use this value to get an accurate distance reading (once calibrated of course). I just don't think that is the case however, with the likelihood of signal attenuation in these significantly low powered devices, I don't expect you'd get consistently accurate readings of an actual distance.
From the CLBeacon
reference the description of accuracy
reads
Indicates the one sigma horizontal accuracy in meters. Use this property to differentiate between beacons with the same proximity value. Do not use it to identify a precise location for the beacon. Accuracy values may fluctuate due to RF interference.
I feel that this inexplicably resonates throughout the entire usage of the iBeacon feature.
This is all my interpretation, I've not gone as fas as testing this in multiple environments over time to see if consistent readings are given. I am not sure if this helps at all.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With