iBeacon Settings

Added in version 8.5

Settings

Navigate Based on iBeacon Proximity

iBeacon is a Bluetooth advertising protocol designed by Apple, with native support in iOS.

Kiosk Pro’s iBeacon navigation integration allows you to display a specific piece of content based on the device’s proximity to an iBeacon. This allows you to create a location-aware interactive presentation. While this isn’t a great fit for a traditional kiosk where the device is in a fixed location, it is more useful for deployments where devices are distributed to visitors, like a multimedia tour of a museum.

There are a number of iBeacon devices currently available for purchase or you can use an iOS device advertising itself as an iBeacon. Testing for this feature was done primarily with Estimote Proximity beacons.

iBeacons are identified using the following:

  • UUID - a 16 byte string, e.g., “B9407F30-F5F8-466E-AFF9-25556B57FE6D”
  • Major - a number from 1 to 65,535
  • Minor - a number from 1 to 65,535

Generally devices from a manufacturer all share a preset UUID and you set the Major and Minor Values to identify specific beacons or groups of beacons. Changing the configuration of a beacon can be done using the manufacturer’s configuration app.

Kiosk Pro uses a mode called ranging to monitor beacon strength, where iOS returns a list of beacons within range of the device and their approximate signal strength to the app about once a second. This frequency is hard-coded at the iOS operating system level and is not something we can change.

The app then uses the signal strength to determine the closest iBeacon and display the appropriate content. It also sorts beacons into the following proximity zones:

  • immediate (strong signal; usually up to a few centimeters)
  • near (medium signal; usually up to a few meters)
  • far (weak signal; more than a few meters)
  • unknown (“hard to say”, usually when the signal is very, very weak)

Signal strength is not a direct proxy for distance and can be blocked by objects like walls or people.

The app can listen for up to 20 UUID’s with unlimited separate monitoring regions based on Major and Minor values within those UDID regions. For simplicity, in most cases, we recommend using a single UUID for all beacons in your project and then monitoring based on the Major and/or Minor values.

To begin monitoring, your page must trigger a JavaScript API call that tells the app to start monitoring. This call references a separate .xml file containing your beacon identifiers, the preferred proximity zone for when to act on a specific beacon, and commands to show a specific URL or to trigger a callback alerting your page that the beacon region has been entered or exited. While the .xml file allows you to define an exit event to be triggered when leaving an iBeacon area, this can be overridden by an entrance event at another iBeacon area and may not always be shown.

The .xml file also defines how the entering or exiting the monitoring range of an iBeacon is handled with two primary options:

<ShowPage withURL="http://www.example.com">, which triggers a redirection to the associated URL.

<NotifyCustomerPage/>, which uses the app’s JavaScript API to trigger a ‘kp_iBeaconAPI_didEnterBeaconRegion’ or ‘kp_iBeaconAPI_didExitBeaconRegion’ callback that returns the name associated with the monitoring region, as well as the UUID, the major value, and the minor value associated with the iBeacon. This allows your page more direct control over how the iBeacon triggers a content change and can be used to create a single page web app that triggers content changes internally without navigating to a new page.

The .xml file also contains a parameter that allows you to define how many pings Kiosk Pro should listen for from an iBeacon before triggering a content change. This interval is based on how often iOS returns the list of beacons to the app, which occurs approximately once a second. If you want the content to shift immediately when a beacon is picked up or a beacon signal is lost, set ‘consecutivePings’ to 1. If you’d prefer the app to confirm that the device has entered an area with multiple pings before triggering a content change, set ‘consecutivePings’ to the number of pings preferred; this ensures that a content change isn’t triggered prematurely from a single dropped ping.

The length of time between iBeacon advertising packets is determined by the iBeacon manufacturer and is configurable for some devices, but generally is a few hundred milliseconds. Setting this to a lower value can decrease the amount of time it takes the device to pick up a new beacon, but will not reduce the one second interval that iOS uses to return information about beacons to the device and will use more power and result in shorter battery life.

Some iBeacons allow for additional calibration of the beacon. If supported, you can calibrate the iBeacons as described in the manufacturer’s documentation or in Apple’s iBeacon documentation (see page 8, Calibrating iBeacon). While Kiosk Pro’s interface does not allow you to access the required RSSI values for calibration, there are a number of free apps, including Locate Beacon by Radius Networks, which do.

Use of the iBeacon Navigation API requires Location permissions for the app and Bluetooth must be enabled on the device. It is not possible to use the iBeacon Navigation and Advertising integrations at the same time.

Advertise Device as iBeacon

iBeacon is a Bluetooth advertising protocol designed by Apple, with native support in iOS.

Kiosk Pro’s iBeacon advertising integration allows you to advertise your device as an iBeacon while also displaying content for visitor use. This makes it possible for the app to support contextual, location-aware experiences through another app on a visitor’s personal device or through Kiosk Pro on another iPad without requiring additional iBeacon hardware.

The iBeacon is identified through a combination or hierarchical values: UUID, major ID, and minor ID. In most cases, we recommend using a shared UUID for all beacons in your project and then monitoring based on the Major and/or Minor values.

Use of the iBeacon Advertising API requires Location permissions for the app and Bluetooth must be enabled on the device. It is not possible to use the iBeacon Navigation and Advertising integrations at the same time.

Advertising uses Bluetooth, which can affect the device’s power usage and battery life. This setting allows you to choose when to advertise the device: always, only after a JavaScript API call (allowing you to start and end advertising as needed), or never.

Options:

  • Always
  • On JavaScript API Call
  • Never (default)

The JavaScript calls required to advertise after an API call are included in our iBeacon Advertising API documentation.

UUID

To successfully advertise a device as an iBeacon, a UUID, major and minor value must all be defined.

UUID stands for Universally Unique Identifier and must contains 32 hexadecimal digits, split into 5 groups, separated by hyphens.

Default: C9CA99FB-69AF-4AE1-B72C-#e5A95E349D3

If you’d prefer not to use this default, the UUID can be edited, but the format of the new UUID must be validated prior to use, which can be done by tapping the ‘Validate UUID’ button in the bottom right corner.

The app can also generate a new, valid UUID by tapping the ‘Generate UUID’ button in the bottom left corner.

In most cases, we recommend using a shared UUID for all beacons in your project and then monitoring based on the Major and/or Minor values.

Major Value

To successfully advertise a device as an iBeacon, a UUID, major and minor value must all be defined.

Default: 1

The Major Value gives you an additional identifier for an iBeacon and use case. For example, this could define a subregion within a larger region defined by the UUID.

Minor Value

To successfully advertise a device as an iBeacon, a UUID, major and minor value must all be defined.

Default: 1

The Minor Value gives you a third identifier for an iBeacon and use case. For example, this could define a subregion within a larger region defined by the Major Value.

Identifier

While successfully advertising as an iBeacon requires a UUID, major and minor value, this Identifier field is optional and can be used in certain scenarios as a human-readable identifier that could be used by a visitor to identify a beacon.

This identifier is not currently supported when using Kiosk Pro’s iBeacon Navigation integration to detect the app advertising on another device.

Still stuck? How can we help? How can we help?