Bluetooth Beacons: What are they, and why should I use them in my app?
by Tim Bornholdt · Published on January 10, 2017
What are beacons?
Beacons are essentially digital lighthouses.
A lighthouse is a stationary object which emits a bright light to tell boats where it is. Similarly, a beacon is a stationary object which emits a digital signal to tell devices where it is.
Beacons are usually small pieces of physical hardware, but your mobile device (like an iPad and iPhone) can also be programmed to act as a beacon.
Why would I use them in my app?
Beacons are tremendously useful for helping your app provide contextually-relevant information based on a user's physical location.
Let's say you are building an app for your family (as some of us developers have done from time to time). If you were to set a beacon in your front doorway, your app could know as soon as your child gets into the house. You could then use that information to send them a note to clean their room, or to alert you that your child is coming in past curfew.
Another common example is in advertising. If you owned a clothing store, you could place a beacon in the men's department. As soon as a user walks by, you could notify them that there is a sale on pants. Or, if you owned an electronics store, you could place a beacon below each television you sell in order to provide a user with more information about that specific model.
Not only can beacons be placed in a stationary place, but because of their portable nature, you can also attach them to moving objects. For example, a beacon fixed to the top of a train could signal your app as it approaches the station.
What kind of data can a beacon transmit?
The signal that a beacon transmits only provides a small amount of information. The information that is most useful to your app would be:
- a universally unique identifier (UUID) which is unique to your app,
- a major number,
- and a minor number.
This information is used by your app to find beacons your app is authorized to use, as well to discover which specific beacon you are working with.
Because a beacon only transmits those three values, you typically need to have some kind of database which associates the beacon information with other information in your app.
For example, if you were building an app to map out the cubicles in your office, you would associate each beacon with a cube. Perhaps you can lay it out like this:
- The UUID would be the number that applies to your app as a whole,
- The major would be the floor of the building you are in, and
- The minor would be the ID of the cube.
As soon as the user gets near a beacon, you would use the UUID, major, and minor numbers to look up which cube belongs to that beacon. From there, you can provide a user with the cube's owner, directions to the cube, and so forth.
One note: your major and minor values needs to be between
65535, and your UUID is 32 hexadecimal digits, split into 5 groups. It would look something like:
Why would I use beacon technology over GPS?
GPS is an indispensable tool for determining a user's position. However, there are many drawbacks to relying solely on GPS:
- GPS is only accurate to within 3 meters (or 10 feet). For many applications (such as providing directions in a car), this isn't an awful range, but if your app requires more accurate information, beacons may be a better solution.
- GPS is prone to building interference, so it doesn't play well indoors. Beacons provide a way to give your system some breadcrumbs to know where a user is indoors, especially if you are in a large building with multiple floors.
- GPS is a battery killer. When GPS was first embedded in smart phones, it was common practice to keep GPS turned off because of how notoriously awful it was with battery. While the technology has gotten better, beacons operate with the Bluetooth Low Energy (BLE) protocol, which is a much friendlier citizen of your battery life.
How accurate are beacons?
A beacon's accuracy depends on your distance from the beacon. The closer you are, the more accurate the reading. To understand why, it helps to understand the underlying technology that drives a beacon.
A beacon's distance is determined by the following factors:
- Broadcasting Power
- Advertising Interval
- Measured Power
A beacon is programmed with a Broadcasting Power amount. The higher this value, the further your beacon can be seen. (Consequently, the higher this value, the faster your beacon's battery will be drained)
Beacons are also programmed with a value called the Advertising Interval. A beacon doesn't broadcast its signal continually like your car radio; it turns off and on to signal at a rapid rate. It can do this once every 100ms to 2000ms (or 0.1 to 2 seconds). Like the Broadcasting Power figure, if you broadcast at a faster Advertising Interval, your beacon's signal will be much more stable (again, at a cost of having your battery die much sooner).
Taking these values into consideration, your app computes an RSSI (a Received Signal Strength Indicator). This value depends on the Broadcasting Power amount and the distance of your device from the beacon.
Finally, your beacon comes factory programmed with a value called Measured Power. This is the RSSI that is expected when you are 1 meter away from the beacon.
Using these four factors, your app will place your user into one of three proximity zones:
- Immediate (less than half a meter away from the beacon)
- Near (between 1 and 3 meters away from the beacon)
- Far (greater than 3 meters away from the beacon)
- Unknown (the app can't tell how far away we are)
Because the RSSI can rapidly fluctuate due to interference from other signals, most beacon-powered apps use these proximity zones to determine location.
What are the disadvantages to beacons?
Not 100% accurate
No one who has worked with a beacon would ever call them "perfect". Bluetooth is a difficult (and usually buggy) piece of technology to work with, but beacons are still a relatively new piece of hardware. The iBeacon and Eddystone protocols have certainly improved with time, but they are still prone to inaccurate readings.
Prone to interference
If you're within 10 or so meters of a beacon, we can pretty accurately estimate where you are. However, if you get further than that, you are prone to interference from buildings and other waves.
In addition, if you line up multiple beacons close to each other, it can be tricky to determine which one you are closest to.
Bluetooth beacons are pretty expensive. Our research shows the average cost of a beacon is around $26.82, regardless of whether you order in bulk or as individual beacons.
Most beacons are powered by small, coin-sized batteries. Depending on how far and how frequently you cast your beacon signal, those batteries will need to be replaced every 3-6 months.
You can use beacons which are wall-powered, but having a wired solution forces you to put the beacon near an outlet instead of virtually anywhere.
It might be unlikely, but because you're using a physical piece of equipment, you are always subject to the whims of a miscreant or ruffian who will walk off with it or deface it.
If you keep your beacon outdoors (and you don't purchase one which is specifically meant for that use case), you are also exposing a delicate piece of technology to the elements, which could cause damage.
Requires the user to use Bluetooth
A lot of people disable Bluetooth in an attempt to save battery. Even though beacons use the low-powered version of Bluetooth, that doesn't necessarily mean people are going to just turn it on in order to use that feature of your app.
High potential for a negative user experience
If you place yourself as the customer in the advertising example I mentioned above, it is pretty obvious why beacons haven't hit their stride in retail yet: most people don't want to receive push notifications for deals on pants.
The best beacon-powered apps use beacons to provide value to their users. You might be able to see the value in beacons for your own purposes, but it's easy to forget that they need to provide value to your end user as well.
What should I keep in mind when incorporating beacons into my app?
Provide value to your user
Please, please don't use beacons to send spam messages to users when they enter your beacon's range.
Use beacons to provide contextually-relevant information based on their location. Put yourself in the user's shoes and think, "would this information help me?"
Don't bank on 100% accuracy
As we outlined in the disadvantages section, beacons are pretty sophisticated pieces of technology, and relatively new as well. Keep that in mind when building out your app, and make sure you have a fallback plan for the case where a beacon is missing or a battery is dead.
Plan on differences between platforms
Modern releases of iOS and Android are becoming more aligned in the areas of user privacy, but there are still a few differences between iOS and Android which you'll need to account for when monitoring a user's location.
In addition, iOS and Android use different implementations for beacons. Eddystone is a cross-platform solution provided by Google, while iBeacon (obviously provided by Apple) allows for deeper integration with iOS devices. We aren't sold one way or the other from our perspective, but you'll want to factor in which devices will use your app when deciding on a platform.
Adding a beacon to your app can provide your users with a vastly improved user experience. If you're looking for help with adding beacon technology to your app, get in touch with us today!