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.
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.
The signal that a beacon transmits only provides a small amount of information. The information that is most useful to your app would be:
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:
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:
GPS is an indispensable tool for determining a user's position. However, there are many drawbacks to relying solely on GPS:
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:
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:
Because the RSSI can rapidly fluctuate due to interference from other signals, most beacon-powered apps use these proximity zones to determine location.
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.
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.
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.
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.
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?"
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.
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!