Universitat Oberta de Catalunya

Introducción a los iBeacon

Es una tecnología usada por Apple para posicionar gente u objetos en espacios interiores. Se trata de una tecnología inalámbrica que hace uso de BlueTooth Low Energy o BLE, esta nueva versión de Bluetooth, tiene muchas mejoras pero la mas importante seguramente es la mejor gestión de la batería, por lo que requiere un consumo mínimo de nuestro dispositivo.

Uno de los objetivos de esta tecnología es la de enviar información muy concreta al usuario dependiendo de su ubicación, al contrario del GPS, esta tecnología funciona en espacios cerrados y con una precisión muy buena. Su radio de acción puede llegar de 1m a los 50m. No es un sustituto del NFC, ya que el NFC esta pensado para distancias mucho mas cortas ya que tiene un alcance de unos 4cm.

En estos momentos una de las aplicaciones mas usadas para los iBeacon, es la de detectar a usuarios en ubicaciones concretas, como por ejemplo cuando nos acercamos a nuestra cafetería favorita, podemos recibir un mensaje preguntándonos si queremos pedir nuestro café favorito antes de entrar por la puerta, o quizá recibir una promoción de venta de televisores, si estamos mucho tiempo parados en la sección de televisores de unos grandes almacenes.

Hemos de tener en cuenta por eso que un iBeacon, sólo se comunica con una determinada aplicación, por lo que sólo recibiremos una notificación si tenemos descargada esa aplicación y le hemos permitido ubicarnos, no recibiremos iBeacon de forma indiscriminada sino sólo de las aplicaciones a las que les permitamos de acceder a nuestra localización.

Los iBeacon son compatibles con dispositivos que tengan instalada la versión de iOS 7 o superior, y tengan soporte de Bluetooth 4.0.

Dispositivos iOS compatibles:

  • iPhone 4s o posteriores
  • iPad (3rd generación) o posteriores
  • iPad mini o posteriores
  • iPod touch (5th generación) o posteriores

Funcionamiento

Ya existen en el mercado emisores dedicados iBeacon bastante económicos y de reducidas dimensiones, algunos del tamaño de una moneda, estos disponen de una pequeña pila, que les permite operar durante mas de un año sin problemas emitiendo una señal bluetooth de baja intensidad. Los hay muy económicos, y nos permiten instalarlos en cualquier lugar o establecimiento facilmente.

La tecnología iBeacon, también es compatible con Android ya que ya existen algunas librerías para poder comunicarse con el protocolo iBeacon, al igual que iOS es necesario que el dispositivo soporte Bluetooth 4.0.

Una de las características mas sorprendentes es que cualquier terminal iOS o Android compatible puede ejercer tanto de emisor como de receptor de iBeacon, por lo que se puede aplicar esta tecnología  en aplicaciones muy variadas y no solo aplicaciones donde se usen emisores dedicados.

El proceso de comunicación de los iBeacon es bastante sencillo, se basa en un identificador UUID (universally unique identifier), y los valores Minor y Major.

El UUID es el identificador principal y básicamente se trata de una cadena de caracteres única que el emisor emite, y los receptores escuchan.

Más información de los UUID: http://en.wikipedia.org/wiki/Universally_unique_identifier

Por ejemplo en un escenario normal una cadena de supermercados quiere instalar esta tecnología para enviar ofertas a sus clientes cuando estén cerca, todos los iBeacon de todas sus tiendas usarán el mismo UUID, para identificar que tienda es, se utilizará el valor Major y para identificar en que sección o departamento se encuentra el usuario el valor Minor.

Por lo que con estos tres valores podremos ubicar a nuestro cliente con bastante exactitud.

Modos de funcionamiento

Las funciones que podemos utilizar con nuestro dispositivos son Advertising, Monitoring o Ranging. La función de Advertising hace actuar a nuestro dispositivo como un emisor iBeacon corriente, creando una región iBeacon y asignándole un UUID y un nombre a esta. La función Monitoring nos permite escuchar iBeacon y recibir una notificación cuando el dispositivo entra o sale de una región determinada. Y por último la opción Ranging nos permite estimar de la mejor manera  la distancia a la que está el iBeacon de nuestro dispositivo.

Advertising

Para empezar a emitir necesitamos crear una región y asignarle los valores UUID, un identificador y opcionalmente los valores Major y Minor.

CLBeaconRegion *region = [[CLBeaconRegionalloc] initWithProximityUUID:UUIDValuemajor:majorValue minor:minorValue identifier:regionName];

Una vez creada la región, podemos establecer opcionalmente la energía que emite ese dispositivo, para aproximar mejor la distancia. En nuestro caso lo dejaremos a nulo.

NSDictionary *beaconPeripheralData = [region peripheralDataWithMeasuredPower:nil];

Y por último activaremos la opción de empezar nuestros iBeacon. El objecto self.peripheralManager es un objeto de la clase CBPeripheralManager, la cual es la encargada de gestionar el BlueTooth del dispositivo.

[self.peripheralManagerstartAdvertising:beaconPeripheralData];

Monitoring

Para empezar a recibir notificaciones al detectar o dejar de detectar un iBeacon, al igual que anteriormente debemos crear una región iBeacon. Esta vez, para detectar todos los iBeacon con el mismo UUID, no especificaremos ni Major ni Minor.

CLBeaconRegion *region = [[CLBeaconRegionalloc] initWithProximityUUID:UUIDValueidentifier:regionName];

Con la siguiente instrucción empezaremos a escuchar iBeacon, con el UUID que hayamos especificado. El objeto self.locationManager pertenece  la clase CLLocationManager, la cual se encarga de usar nuestra ubicación, por lo que será necesario que el usuario nos de permiso para usarla con anterioridad.

[self.locationManagerstartMonitoringForRegion:region];

Ranging

Y finalmente  está la función de Ranging, mediante la cual podemos saber en todo momento nuestra distancia al iBeacon.

Al igual que anteriormente necesitaremos crear primero la región que queremos utilizar.

[CLBeaconRegion *region = [[CLBeaconRegionalloc] initWithProximityUUID:UUIDValueidentifier:regionName];

Y después simplemente activar la opción de Ranging, para empezar a recibir esta información.

[self.locationManagerstartRangingBeaconsInRegion:region];

La información de los tres modos la recibimos registrándonos a los correspondientes delegate, para la función de emisor al CBPeripheralManagerDelegate y al delegate CLLocationManageDelegate para la parte de Monitoring y Ranging.

Más información

Para ver más teoría sobre iBeacons recomendaría visitar la página oficial de Apple. https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf

Para ver código vale la pena descargar el proyecto HiBeacons disponible en GitHub.
https://github.com/nicktoumpelis/HiBeacons

Etiquetas:

Acerca del autor

Fundador de la empresa PegPeg, especializada en la creación de aplicaciones para plataformas móviles (iOS/Android), con más de 12 años de experiencia en el desarrollo de soluciones web y portales corporativos y 8 años de experiencia en el desarrollo de soluciones móviles, ha creado diferentes proyectos como mixmastertube (portal donde realizar mezclas de videos de YouTube), sumophoto (app de concurso de fotografías), etc.
Finalista en el concurso mundial Atari Indie Developer Challenge de 2013, para desarrollar una nueva versión del juego Pong para plataformas iOS. Actualmente también colabora como consultor del Máster de Desarrollo de Aplicaciones Multimedia de la UOC.

Un comentario

Deja un comentario

Deja un comentario