iOS and Android Apps

There are two kinds of app for use with Beacons. The first, usually supplied by the beacon manufacturer, is to allow the beacon parameters to be set up. In most cases these apps are just setting Bluetooth Service Characteristic values via an easy-to-use user interface. There are also apps such as Lightblue on iOS and nRF Connect on Android that allow you to read and modify these values directly. These are useful when the manufacturer app either doesn't work well or doesn't support the full range of beacon parameter settings.

The second type of app is one that end users use to interact based on the presence of beacons. Smartphone apps start Bluetooth LE scans that retrieve advertising data. This advertising data usually contains either an Apple iBeacon id (UUID, major and minor) and/or a Google Eddystone-UID. For iBeacon and Eddystone-UID, the app compares this id to pre-created ids in other data in order to determine what to do or show the user. This 'other data' might be bundled with the app at time of install or downloaded from a server. One thing to bear in mind is that many uses of beacons are indoors where there's no or poor connectivity. Hence, it's usually necessary to download the data ahead of time.

iOS is slightly more challenging in that you can only look for up to 20 different regions at a time, a region being defined as one or more beacons. Again, the regions need to be pre-defined in the app or downloaded ahead of the time they need to be used. The Android API is lower level and can see all beacons.

Apps can scan either in the foreground when the user is using the app or in background when the app isn't running. Depending on the exact scenario, background use usually results in phone notifications that, if pressed on, start the app.

Most scenarios only use the Bluetooth advertising data. More advanced use involves the app connecting to the beacon to obtain further battery or sensor information. This is done via connecting to known Bluetooth Services (using more pre-known ids) and Characteristics (using even more pre-known ids) to read or modify data. This doesn't tend to be the normal usage mode as connecting to beacons stops them sending their advertising packets and hence stops other phones seeing the beacon. Connecting and reading/writing data is also slower than just receiving the advertising data, especially when many phones need to connect to a beacon because only one phone can connect at a time. It's for these reasons, some newer beacons are starting to put battery and sensor data into the advertising data.

iOS and Android SDKs are sometimes supplied by beacon manufacturers. However, you usually don't need them and they are often only a thin wrapper over native Bluetooth APIs . If you have trouble with them, don't trust them or want to create a system less dependent on particular providers then you can usually use the Android and iOS Bluetooth APIs directly. There are also alternative, free, open source SDKs such as Radius Network's iOS SDK and the EasiBeacon Android library.

If you are looking for ready-made 3rd party apps that use beacons then take a look at the personal section of our solutions directory or search for 'ibeacon' in the app stores.

If you need a custom app read about our consultancy.

Learn about Trigger Data and Beacon Servers

Read about Using Bluetooth Low Energy (LE)

Tags: ibeacon, eddystone, ios, android