mashrur mashrur - 5 days ago 14
iOS Question

iBeacons - Company (Estimote, Gimbal, etc.) SDKs vs Android/iOS library

I have been playing around with an Estimote iBeacons with their Android SDK. However, I am still confused about why there are so many SDKs available.

iBeacons are just standard bluetooth devices that have the Bluetooth Low Energy (BLE) part of the Bluetooth 4.0 specification. As long as you have a device that is "Bluetooth Smart Ready" (iPhone 4S+, and Android 4.3+) you will be able to detect all iBeacons, regardless of beacon manufacturer. Android (Bluetooth Low Energy Connectivity) and iPhone (iOS Developer Library) both provide system level library to develop app to use iBeacons.

So why are there so many SDKs for connecting to iBeacons (Gimbal, Estimote, Radius Networks, open source Android API).

So I have a few questions:


  • Why are so many SDKs available? Can manufactures lock their beacons to be accessible through only their SDK?

  • Can the Android 4.3 Bluetooth Connectivity library poll and find any iBeacon?

  • What are the advantages of using a non Android SDK? It seems to me that geofencing and proximity detection are possible with just the android library but notification and constant background polling is not possible.


Answer

Understand that Beacons are a specific application of Bluetooth LE. Bluetooth LE is a general purpose short-range communication technology that can do many things like transmit audio to a speaker.

Low-level APIs like Android's built-in Bluetooth APIs and Apple's CoreBluetooth APIs are intended for general purpose bluetooth applications. They don't do beacon-specific things like:

  • decoding beacon identifiers
  • estimating distance to beacons
  • determining when the beacons appear and disappear
  • launching apps or sending notifications on beacon detection

In order to accomplish these things, you either need to write your own software (which is error prone and time consuming), or use a pre-built higher level library. For iOS devices, Apple has beacon capabilities built-in to the operating system with the CoreLocation APIs. Android has no such built-in library.

Because Android has no built-in beacon library, different third parties have built them. My company made the first one in September 2013, which has evolved into today's open-source Android Beacon Library.

Other companies that sell beacons often make their own libraries (some are based on this open source library, and some are not) in order to support proprietary features from their beacons or proprietary cloud services that build on them.

So the answers to your last two questions are:

  • Yes, the Android 4.3 Bluetooth Connectivity library can poll and find any iBeacon, but you will have to write lots of code on top of that library to make it happen.

  • The advantage of using an additional library is that you don't have to write and debug all that code. You can focus on the logic that needs to go into your app and not spend all your time on low-level beacon processing.

Full disclosure: I am Chief Engineer at Radius Networks and the author of the Android Beacon Library.

Comments