The iBeacon Detection process, iOs and Android

What is a beacon region?

A central notion when working with beacons is the beacon region

A beacon region is a filter that allows developers to filter beacons based on: -their UUID -their UUID, Major -or their UUID, Major, Minor

For example, if an application works with beacon regions by filtering on the UUID “uuid01”:

  • the application will only interact with nearby beacons with “uuid01” as their UUID
  • the application will be notified of an entry in this region when it detects the first beacon with the UUID “uuid01”
  • the application will be notified of an exit from this region only when it does not detect any “uuid01” beacon in range anymore

Note:

One of the major limitations of the concept of beacon regions based on the UUID is that it is not possible to individually detect zone entries and exits at the level of individual beacons: you are only able to retrieve information on region entry and region exit (whatever the beacon). To have greater detail on each beacon, you need to implement beacon regions based on UUID / Major / Minor filters (in other words, each region is a beacon).

iOs

On iOS, the beacon detection process is managed by the operating system itself through the CoreLocation framework.

This allows the beacon scanning process to be common to all applications, to optimize battery consumption, but it also introduces some limitations:

  • the scanning frequency is managed by iOs and cannot be changed at application level
  • iOs removed the iBeacon frame from the scans realized with the CoreBluetooth framework
    • The only way to detect iBeacon frames is to use the CoreLocation framework.
  • On iOS 7, unfortunately, when the application is killed or when the phone reboots, the phone will not be able to detect beacons again until the application is relaunched.
    • Since iOs 8, these limitations have been resolved.
  • A maximum of twenty regions is authorized per application.
  • Some beacon functions cannot be used when an application is in the background or killed

In the Foreground

When an application is in the foreground, it can:

  • be notified of an entry in or an exit from a beacon region, based on the region filter you have set up
  • access the list of nearby beacons based on your region filter as well

In the Background

When an application is in the background it can:

  • be notified of an entry in or an exit from a beacon region, based on the region filter you have set up
  • access the list of nearby beacons based on your region filter as well
    • during 10 minutes, using a background task when the application wakes-up
    • for example, when the application is notified of an entry in or an exit from a beacon region
    • if the application explicitly asks to use the bluetooth functionality in the background

When an application is killed

When an application is killed, it can:

  • be notified of an entry in or an exit from a beacon’s region, based on the region filter you have set up
  • access nearby beacons:
    • during 10 minutes, using a background task when the application wakes-up
      • for example, when the application is notified of an entry in or exit from a beacon region

Android

On Android, the beacon detection process is managed at SDK level. Our SDK is based on the AltBeacon library that mimics the iOs CoreLocation functions.

Nevertheless, it offers more flexibility:

  • the scanning frequency can be customized
  • the number of regions is not limited
  • the SDK can scan for beacons when the application is in the background, or when the application is killed* without any limitations
    • Warning: Scanning for beacons is demanding in terms of battery-consumption, and must be managed smartly when the application is in the background or killed

*On Android, our SDK manages a service to scan for beacons. This service automatically restarts when:

  • users kill the application
  • users reboot their phone

Conclusion

Managing beacon regions can quickly become complex, in particular on iOs when the application is in the background or killed.

That is why our SDK offers ** developers** automatic management of the beacon regions, in particular to display local notifications in association with beacons. This allows developers to focus on the beacon experience and to save integration time.

Back to home