iBeacons are small signal generators that advertise their location via Bluetooth. An Android or iOS Device may look for these signals and then receive updates about proximity to the beacon.
As a developer, you can collect this data, process it and then send it to Sailthru Mobile for creating audiences, and triggering automated messages.
iBeacon vs Beacon
iBeacon is beacon technology that is owned by Apple. The name "iBeacon" has become synonymous with beacon technology in general, as it is widely used.
The Beacon protocol has several key attributes, including:
- UUID: A unique, hexadecimal identifier for the device
- Major: A non-negative integer
- Minor: A non-negative integer
- RSSI: A decibel value of signal strength from the beacon
This data is then translated into something more usable by either iOS or a 3rd Party Beacon SDK such as Estimote, Gimbal or Kontakt. On iOS, you can use Core Location OR a 3rd party SDK from your beacon provider. On Android, it's easiest to use a 3rd party library.
Regular beacon devices have three attributes – a UUID, Major and Minor. Apple recommends using one UUID for all your beacons, and differentiating locations hierarchically with major and minor versions.
Getting the actual data via your provider's SDK is dependent on the SDK implementation, so refer to their documentation for instructions.
On iOS Devices, you can use the CoreLocation API, which you can read about on Ray Wenderlich.
Some useful User Attributes you might want to set may be:
- Last seen (Date)
- Distance (Float)
- Major (Integer)
- Minor (Integer)
- UUID (String)
Some Custom Events you might want to log may be:
- iBeacon seen
- iBeacon with this name seen
Working with User Attributes in the background
On iOS, you'll be able to get location updates in the background. However, this code must be executed within a certain time limit and stay within a single thread. Therefore, it is advised you use the Synchronous versions of the API, which are indicated by their NSError parameter.
For messaging best practices is developer tips, refer to these two iBeacon articles on the Carnival Insights blog: