iBeacon is a popular term among mobile developers these days. The technology enables an iOS device (with at least iOS 7 installed) or an Android device (at least 4.4 version required) to wake up applications on devices in close proximity. It"s mainly used for indoor positioning, you can think of it as complementary to GPS because it can also give information regarding where the user is indoor: are they close to the shoe store or are they looking at the chocolate isle in a hypermarket.
The iBeacon works on Bluetooth Low Energy known as Smart BLE. A couple of potential applications could be:
Let"s see a typical example of a use case regarding iBeacons. Mihai is a manager of an electronic retail chain. Geanina is a customer of the retail chain. She has the retail chain"s mobile app on her iPhone 5S. She"s in a certain store and allows the mobile app to monitor her location inside the store(she"s looking at a Sony TV). Thanks to the iBeacon technology Mihai can give Geanina relevant ads to her shopping history and current location (for instance a discount on the Sony TV she"s looking at). That"s just a big case.
An iBeacon device identifies itself via a combination of 3 customizable values: UUID (128 bit), major, and minor (16 bit each). In the example we had above, UUID would be an identifier for the retail chain, the major could identify the store number and the minor could identify a special location inside the store (entry point in the store, a certain shelf or checkout). The signal the iBeacon broadcasts allows you to calculate the approximate distance from the smartphone and thus know where the user is inside an indoor location.
One of the big misconceptions with the iBeacons is that they track you. That is not correct. The only thing the devices do is broadcast a signal to inform the application of the proximity. They provide data about the indoor location you are in with a better precision than a GPS. This in order to serve the customer with specific relevant, context aware information that customer might need once in a specific location.
We"re a Cluj startup which was founded because we want to help mobile developers add great experience for their users. We develop our own beacons which are iBeacon compatible and can be used by businesses in their stores to enable proximity features in their apps. On top of that we developed software in order to help mobile developers make use of this technology. First of all we have iOS and Android SDKs, which mobile developers can use to leverage the beacon functionality.. We also developed a cloud backend, which is used for Beacon management, advanced scheduling of content availability, and API access. Mobile apps can integrate the SDK to add support for beacons and backend API.
iOS OnyxBeacon SDK enables iOS developers to add support for iBeacons and OnyxBeacon backend in their apps, bringing to the users the iBeacon experience. The SDK is easy to integrate and use, with just a few steps the app will start receiving notifications from OnyxBeacon backend.
iOS OnyxBeacon SDK wraps iBeacon protocol handling, iBeacon management, notifications management, communication with OnyxBeacon backend and exposes simple calls for receiving notifications, ready to use and present to users.
iOS SDK is provided in the form of a sample app that contains the following modules:
OnyxBeacon backend defines several manageable entities that define the end user experience. Each entity is scaled to provide flexibility in defining the content that will be offered to the App user.
Define the needed information and authentication tokens required for a specific App (implementing the SDK) to properly communicate with the OnyxBeacon API
The following properties can be defined:
Define a list of available Beacon Identifiers that will later be used to uniquely identify a Beacon
The following properties can be defined:
Define a list of unique beacons to be used in conjunction with other entities and serve the data to the end user. The following properties can be defined:
Used to define media entities served to the App user. Currently supports images to be served with Coupons
Defines the content that will be served to the end user. The following properties can be defined:
Define time frames used in conjunction with Plans and Coupons. A certain Coupon will be served to the end user in that specific time frame, for a give Plan
The following properties can be defined:
Define the Promotion Plan for a given Beacon. Multiple plans can be created to accommodate different time frames and/or Beacons. The following properties can be defined:
Define a Promotion, having multiple Plans and a time frame in which it is available. This gives even more flexibility to how the content will be served to the end user, The following properties can be defined:
Creating the needed entities for a promotion require other entities to have been defined, or must be defined on the spot. A typical flow will follow the above order, defining each entity at a time. The entity administrators allow the administrator to defined new entities "on-the-fly" inside other entities. For this, just click the "Add new" button on the right side of the field. Entities can also be created by using the "Setup Entities" section, accessible from the top menu. New entities created here will have to be linked manually once created, or by using the "Add new" feature while defining them.
The work flow, and required dependencies, can be resumed to the below: Application Bundles -> Company UUIDs -> Beacons -> Media -> Coupons -> Time Frames -> Plans -> Promotions.
If somebody has a different backend and wants to use our SDK for iOS and Android we can provide api calls. All api calls are using POST method and are performed using the server URL. The server URL can be configured in SDK to point to a different address than
https://connect.onyxbeacon.com/api.php
Request and response bodies are JSON objects.
On startup, the SDK will make a request to get the list of proximity UUIDs that are configured for the bundle identifiers provided in request body
{
"function":"getUuids",
"parameters":
{
"identifier": "com.example.app",
"installid": "device identifier string"
}
}
["uuid1", "uuid2"]
Response contains an array of proximity UUIDs for which the app should monitor the regions.
"function":"getContentForBeacons",
"parameters":
{
"identifier": "com.example.app",
"installid": "device identifier string"
"beacons":
(
{
"uuid": "uuid1",
"major": "majornumber",
"minor": "minornumber"
},
{
"uuid": "uuidn",
"major": "majornumber",
"minor": "minornumber"
},
...
)
}
}
The response is a JSON object received from the server and the structure is defined by the developer.
The user information dictionary is provided by the key userMetrics in parameters dictionary.
{
"function":"setMetrics",
"parameters":
{
"identifier": "com.example.app",
"installid": "device identifier string"
"userMetrics":
{
"userkey": "uservalue",
...
}
}
}
User information sent to backend is developer specific. The Sample App uses user Facebook information for further processing and analytics on the server.
Coupon metrics call is specific for mobile marketing module and can be used to notify backend on user actions. The information is contained in couponMetrics dictionary and has two keys:
This call can be used for any content type defined by the developer.
{
"function":"setMetrics",
"parameters":
{
"identifier": "com.example.app",
"installid": "device identifier string"
"couponMetrics":
{
"couponid": "cid",
"couponaction": "opened"
}
}
We will be part of Techsylvania, the conference organized at the hackathon there where we will also have our beacons and our SDKs which you can use to build great mobile user experiences.