intive Argentina Blog

iBeacons

iBeacon es una tecnología desarrollada por Apple en 2013. Este consiste en un dispositivo Bluetooth de baja potencia que emite una señal según el protocolo diseñado por Apple. El propósito de este aparato es ser detectado por dispositivos móviles como medio para determinar la posición local del usuario en relación con el beacon. Funcionalmente, es su única capacidad, ni más ni menos. A primera vista, puede parecer una función muy básica. Sin embargo, con un poco de imaginación, esto puede tener muchas aplicaciones. Echemos un vistazo al dispositivo en cuestión:

1 2Como pueden ver, el dispositivo es muy pequeño. Vale la pena señalar que si bien el concepto y el protocolo pertenecen a Apple, el dispositivo puede ser construido por diferentes vendedores. Por consiguiente, está disponible en muchas formas y tamaños. La función, sin embargo, permanece idéntica en todos los modelos. También, a diferencia de otras invenciones de Apple, el dispositivo puede ser utilizado por teléfonos con Android y Windows.

 

Implementación

Primero, miremos las señales emitidas por el beacon:

3

Cuando adquirimos uno de estos dispositivos, la documentación debería decir qué valores está emitiendo el beacon. Si no, podemos utilizar apps públicas para detectar estos valores (como “iBeacon Detector” y “Particle Detector”). La señal está diseñada para ser usada en un sentido jerárquico, siendo el UUID el más importante. La razón por la que los otros dos valores existen es porque podemos tener varios beacons con el mismo UUID con distintas áreas o sub-áreas. Ilustraremos esto mejor en el ejemplo del final. Ahora, hablemos un poco del código.

El código para la detección de esta señal es bastante simple y directo. Primero, debemos crear un CLLocationManager y pedir la correspondiente autorización:

4

Ten en cuenta que para que el pedido de autorización funcione, también debes escribir el texto con el pedido de autorización en el .plist del proyecto:

5

Luego de eso, creamos la Beacon Region e instruimos al Location Manager para que comience a monitorearla.

6

¡Eso es todo! Ahora, cuando el dispositivo ingrese a la región, comenzará a buscar una señal emitida con un UUID en particular (siempre y cuando el servicio bluetooth del dispositivo esté activo, por supuesto). También debería ser mencionado que podemos pedirle a la aplicación que busque más de una región de beacons. Simplemente crea más objetos CLBeaconRegion y utiliza el método “startMonitoringForRegion:” para escucharlas. De esta manera puedes tener beacons con diferentes UUIDs. Ahora, miremos los métodos delegados para la detección de eventos relacionados con esto:

7

 

«Muerte y misterio en la mansión»

Para entender mejor cómo usar esta prestación, analicemos un caso hipotético.

8

Imaginemos que estamos creando un Juego de Realidad Alternativa (ARG), uno que sucede en una mansión física real. Los jugadores jugarían el rol de un equipo de detectives que están juntando indicios de un asesinato perpetrado esa tarde. La función de la aplicación sería proveer a los jugadores de segmentos de la historia e información contextual cuando ingresan a una habitación en particular y completan una acción específica. Y eso no es todo, también son detectives que cuentan con alta tecnología. La aplicación les brindará “detectores” especiales para avisarles cuando están cerca de una pista. Utilizando la cámara (con Realidad Aumentada), los jugadores escanearán este lugar en particular para revelar la pista que los llevará a otra habitación y destrabará la siguiente parte de la historia.

Todo esto suena buenísimo sobre papel, ¿no es cierto? Pero, ¿puede ser implementado? Por supuesto, la respuesta es que sí. Para disparar estos eventos, debemos seguir la posición del jugador todo el tiempo con un nivel relativo de precisión. Aquí está como se vería el plano de planta de la mansión.

9

Utilizando varios beacons con diferente información, podemos decir en qué habitación está el jugador y alimentarlo con información de manera acorde. Así se vería según las señales provistas por los beacons.

10

Analicemos esto:

  • El área dentro del borde azul representaría TODOS los beacons. Esto determina si el usuario está o no dentro de la mansión para comenzar. Para lograr esto todos los beacons tendrán el mismo “UUID”.
  • Las áreas dentro de los bordes coloreados serían representadas por un valor “Mayor” particular para ese lugar.
  • Para terminar, las áreas con la X y el círculo rojo representarían los lugares especiales donde el “Detector de Pistas” le diría al usuario que una pista está cerca. Estas áreas pueden ser determinadas por el valor “Minor”.

Resumiendo, con esta tecnología, tenemos la base para hacer un juego que use el espacio físico real para involucrar al usuario.

 

Conclusión

La tecnología iBeacon tiene tantas aplicaciones como podamos imaginarnos. Ya sea algo tan complejo como un videojuego o simplemente una app para una tienda de ropa, los principios se mantienen iguales. Entonces, diviértete programando con él.

Ezequiel González

Es desarrollador de software en intive – FDV desde 2012 e integra la Brigada iOS. En el pasado, también trabajó como tester. Estudió la carrera de Diseño y Programación de Videojuegos en la Escuela Da Vinci de Buenos Aires. Es aficionado a los libros de terror y ciencia ficción, a las series y, lógicamente, a los videojuegos.

Deja un comentario