EDITING BOARD
RO
EN
×
▼ BROWSE ISSUES ▼
Issue 23

Onyxbeacon iBeacon Management Platform

Bogdan Oros
Co-Founder
@Onyx Beacon



PROGRAMMING

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:

  1. iBeacons specific devices could send notifications of items nearby that are on sale or product information for items customers are looking at,
  2. enable mobile payments instead of NFC
  3. provide valuable information while in a certain indoor location

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.

How does an iBeacon identify itself?

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.

Are there any privacy issues regarding the iBeacons?

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.

Now, who is OnyxBeacon and what is our role in this ecosystem?

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.

OnyxBeacon Platform Components

OnyxBeacon iOS SDK

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 library - contains the logic for managing Beacons, Coupons, Beacon management.
  • Sample App - an app that shows how to integrate the library and use the interfaces provided by the library
  • AFNetworking - the 3rd party library used for running requests
  • Facebook framework - used in sample app to get user information.

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.

OnyxBeacon Backend Entities

Application Bundles

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:

  • Name - Application Name - Used to distinguish the different applications that use the SDK
  • Description - Useful for adding comments and non critical data about the App
  • Identifier - The App Identifier - This must be the one available when the App has been published to the mobile store / during the development process
  • Secret - The initial secret for the App. Required in authentication

Company UUIDs

Define a list of available Beacon Identifiers that will later be used to uniquely identify a Beacon

The following properties can be defined:

  • Name - ~
  • Description - ~
  • Identifiers - A unique identifier (UUID format) used in conjunction with other properties to uniquely identify a Beacon - This is required

Beacons

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:

  • Name - ~
  • Description - ~
  • UUID - One UUID defined for the Company in the previous step
  • Major/Minor - Properties that help in defining a unique Beacon. Multiple Beacons can have the same UUID, but require a unique Major/Minor combination
  • Latitude/Longitude/Altitude - used to Define the final location of a Beacon, once deployed

Media

Used to define media entities served to the App user. Currently supports images to be served with Coupons

Coupons

Defines the content that will be served to the end user. The following properties can be defined:

  • Name - ~
  • Description - ~
  • Message - A message shown to the user once the Coupon is served
  • URL - The user will be redirected to this URL when clicking the served Coupon on the mobile device
  • Media - The image shown on the coupon

Time Frames

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:

  • Name - ~
  • Description - ~
  • Coupon - The Coupon to use
  • Start - The moment the coupon becomes active
  • Stop - The moment the coupon is no longer active

Plans

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:

  • Name - ~
  • Description - ~
  • Beacon - The beacon to which the plan applies
  • Time Frame - The time frame used (consequently, what Coupon will be served to the end user)

Promotions

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:

  • Name - ~
  • Description - ~
  • Start/Stop - Time frame in which the promotion is available
  • Plans - The Plans available for the promotion

Workflow

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.

Backend API Calls

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.

Fetching UUIDs

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

  • Request
{
    "function":"getUuids",
    "parameters":
    {
        "identifier": "com.example.app",
        "installid": "device identifier string"
    }
}
  • Response
["uuid1", "uuid2"]

Response contains an array of proximity UUIDs for which the app should monitor the regions.

Requesting content for BeaconsSolicitare

   "function":"getContentForBeacons",
    "parameters":
    {
        "identifier": "com.example.app",
        "installid": "device identifier string"
        "beacons":
        (
            {
                "uuid": "uuid1",
                "major": "majornumber",
                "minor": "minornumber"
            },
            {
                "uuid": "uuidn",
                "major": "majornumber",
                "minor": "minornumber"
            },
            ...
        )
    }
}
  • Response

The response is a JSON object received from the server and the structure is defined by the developer.

User Metrics

  • Request

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

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:

  • couponid - id of the content provided by backend
  • couponaction - one of the opened or tapped values is set depending on the user action

This call can be used for any content type defined by the developer.

  • Request
 {
      "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.

VIDEO: ISSUE 109 LAUNCH EVENT

Sponsors

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects

VIDEO: ISSUE 109 LAUNCH EVENT