iBeacon es un protocolo desarrollado por Apple y presentado en la Conferencia Mundial de Desarrolladores de Apple en 2013. [1] Desde entonces, varios proveedores han creado transmisores de hardware compatibles con iBeacon, generalmente llamados balizas , una clase de dispositivos Bluetooth Low Energy (BLE) que transmiten su identificador a dispositivos electrónicos portátiles cercanos . La tecnología permite que los teléfonos inteligentes , tabletas y otros dispositivos realicen acciones cuando están cerca de un iBeacon. [2] [3]
iBeacon se basa en la detección de proximidad de Bluetooth de bajo consumo mediante la transmisión de un identificador único universal [4] recogido por una aplicación o un sistema operativo compatible. El identificador y varios bytes enviados con él se pueden utilizar para determinar la ubicación física del dispositivo, [5] rastrear a los clientes o activar una acción basada en la ubicación en el dispositivo, como un registro en las redes sociales o una notificación push .
iBeacon también se puede utilizar con una aplicación como un sistema de posicionamiento en interiores , [6] [7] [8] que ayuda a los teléfonos inteligentes a determinar su ubicación o contexto aproximado. Con la ayuda de un iBeacon, el software de un teléfono inteligente puede encontrar aproximadamente su ubicación relativa a un iBeacon en una tienda. Las tiendas minoristas físicas utilizan las balizas para el comercio móvil , ofreciendo a los clientes ofertas especiales a través del marketing móvil , [9] y pueden habilitar pagos móviles a través de sistemas de punto de venta .
Otra aplicación es la distribución de mensajes en un punto de interés específico , por ejemplo, una tienda, una parada de autobús, una habitación o una ubicación más específica, como un mueble o una máquina expendedora. Esto es similar a la tecnología geopush utilizada anteriormente basada en GPS , pero con un impacto mucho menor en la duración de la batería y una mejor precisión.
iBeacon se diferencia de otras tecnologías basadas en la ubicación en que el dispositivo de transmisión (baliza) es solo un transmisor unidireccional hacia el teléfono inteligente o dispositivo receptor y requiere una aplicación específica instalada en el dispositivo para interactuar con las balizas. Esto garantiza que solo la aplicación instalada (no el transmisor iBeacon) pueda rastrear a los usuarios mientras caminan alrededor de los transmisores.
Los transmisores compatibles con iBeacon vienen en una variedad de formatos, incluidos pequeños dispositivos de celdas de moneda, memorias USB y adaptadores USB genéricos compatibles con Bluetooth 4.0 . [10]
Una implementación de iBeacon consta de uno o más dispositivos iBeacon que transmiten su propio número de identificación único al área local. El software en un dispositivo receptor puede entonces buscar el iBeacon y realizar varias funciones, como notificar al usuario. Los dispositivos receptores también pueden conectarse a los iBeacons para recuperar valores del servicio GATT ( perfil de atributo genérico ) de iBeacon. Los iBeacons no envían notificaciones a los dispositivos receptores (aparte de su propia identidad). Sin embargo, el software móvil puede utilizar las señales recibidas de los iBeacons para activar sus propias notificaciones push. [11]
El monitoreo de regiones (limitado a 20 regiones en iOS) puede funcionar en segundo plano (del dispositivo que escucha) y tiene diferentes delegados para notificar a la aplicación que escucha (y al usuario) sobre la entrada o salida de la región, incluso si la aplicación está en segundo plano o el teléfono está bloqueado. El monitoreo de regiones también permite una pequeña ventana en la que iOS le da a una aplicación cerrada la oportunidad de reaccionar ante la entrada a una región.
A diferencia del monitoreo, que permite a los usuarios detectar movimiento dentro y fuera del alcance de las balizas, la medición de distancia proporciona una lista de balizas detectadas en una región determinada, junto con la distancia estimada desde el dispositivo del usuario hasta cada baliza. [12] La medición de distancia funciona solo en primer plano, pero devolverá (al dispositivo que escucha) una matriz (ilimitada) de todas las iBeacons encontradas junto con sus propiedades ( UUID , etc.) [13]
Un dispositivo iOS que recibe una transmisión de iBeacon puede aproximarse a la distancia desde el iBeacon. La distancia (entre el iBeacon que transmite y el dispositivo que recibe) se clasifica en tres rangos distintos: [14]
Una transmisión iBeacon tiene la capacidad de aproximarse cuando un usuario ha entrado, salido o permanecido en una región. Dependiendo de la proximidad de un cliente a una baliza, puede recibir diferentes niveles de interacción en cada uno de estos tres rangos. [15]
El alcance máximo de transmisión de un iBeacon dependerá de la ubicación y la colocación, de las obstrucciones del entorno y de dónde se guarde el dispositivo (por ejemplo, en un bolso de cuero o con una funda gruesa). Las balizas estándar tienen un alcance aproximado de 70 metros. Las balizas de largo alcance pueden alcanzar hasta 450 metros.
La frecuencia de transmisión de iBeacon depende de la configuración del iBeacon y se puede modificar mediante métodos específicos del dispositivo. Tanto la velocidad como la potencia de transmisión afectan a la duración de la batería del iBeacon. Los iBeacon vienen con configuraciones predefinidas y el desarrollador puede cambiar varias de ellas, incluidas la velocidad, la potencia de transmisión y los valores mayor y menor. Los valores mayor y menor son configuraciones que se pueden utilizar para conectarse a iBeacons específicos o para trabajar con más de un iBeacon al mismo tiempo. Por lo general, varias implementaciones de iBeacon en un lugar tendrán el mismo UUID y utilizarán los pares mayor y menor para segmentar y distinguir subespacios dentro del lugar. Por ejemplo, los valores mayor de todos los iBeacons en una tienda específica se pueden configurar con el mismo valor y el valor menor se puede utilizar para identificar un iBeacon específico dentro de la tienda.
El protocolo Bluetooth LE es significativamente más eficiente energéticamente que el Bluetooth Classic. Varios fabricantes de chipsets, incluidos Texas Instruments [17] y Nordic Semiconductor, ahora ofrecen chipsets optimizados para el uso de iBeacon. El consumo de energía depende de los parámetros de configuración de iBeacon de intervalo de publicidad y potencia de transmisión. Un estudio sobre 16 proveedores diferentes de iBeacon informa que la duración de la batería puede variar entre 1 y 24 meses. La configuración recomendada por Apple de intervalo de publicidad de 100 ms con una batería de tipo botón proporciona una duración de 1 a 3 meses, que aumenta a 2 o 3 años a medida que el intervalo de publicidad se incrementa a 900 ms. [18]
El consumo de batería de los teléfonos es un factor que debe tenerse en cuenta al implementar aplicaciones habilitadas para balizas. Un informe reciente ha demostrado que los teléfonos más antiguos tienden a consumir más batería en las proximidades de iBeacons, mientras que los teléfonos más nuevos pueden ser más eficientes en el mismo entorno. [19] Además del tiempo empleado en el escaneo del teléfono, la cantidad de escaneos y la cantidad de balizas en las proximidades también son factores significativos para el agotamiento de la batería, como se señala en el informe de Aislelabs . [20] En un informe de seguimiento, Aislelabs encontró una mejora drástica en el consumo de batería para iPhone 5s, iPhone 5c en comparación con el modelo anterior iPhone 4s. Con 10 iBeacons alrededor, el iPhone 4s puede consumir hasta un 11% de batería por hora, mientras que el iPhone 5s consume un poco menos del 5% de batería por hora. [21] Una aplicación iBeacon energéticamente eficiente debe considerar estos aspectos para lograr un buen equilibrio entre la capacidad de respuesta de la aplicación y el consumo de batería.
A mediados de 2013, Apple presentó los iBeacons y los expertos escribieron sobre su diseño para ayudar a la industria minorista simplificando los pagos y permitiendo ofertas en el lugar. El 6 de diciembre de 2013, Apple activó los iBeacons en sus 254 tiendas minoristas de Estados Unidos. [22] McDonald's ha utilizado los dispositivos para ofrecer ofertas especiales a los consumidores en sus tiendas de comida rápida. [9]
A partir de mayo de 2014, se pueden adquirir diferentes iBeacons de hardware por tan solo $5 por dispositivo o más de $30 por dispositivo. [23] Cada uno de estos diferentes iBeacons tiene diferentes configuraciones predeterminadas para su potencia de transmisión predeterminada y frecuencia de publicidad de iBeacon. Algunos iBeacons de hardware anuncian a frecuencias tan bajas como 1 Hz, mientras que otros pueden ser tan altas como 10 Hz.
La tecnología iBeacon todavía está en pañales. Existe una anomalía de software bien documentada en los sistemas Android 4.2 y 4.3 por la cual la pila de Bluetooth del sistema se bloquea cuando se presentan muchos iBeacons. [24] Se informó que esto se solucionó en Android 4.4.4. [25]
Los dispositivos Bluetooth de bajo consumo pueden funcionar en modo de publicidad para notificar a los dispositivos cercanos de su presencia. [26] En su forma más simple, un iBeacon es un dispositivo Bluetooth de bajo consumo que emite publicidad siguiendo un formato estricto, que es un prefijo iBeacon definido por Apple, seguido de un UUID variable y un par mayor y menor. [27] Un ejemplo de marco de publicidad iBeacon podría verse así:
fb0b57a2-8228-44cd-913a-94a122ba1206 Mayor 1 Menor 2
donde fb0b57a2-8228-44cd-913a-94a122ba1206 es el UUID. Dado que la publicidad iBeacon es solo una aplicación de la publicidad general de Bluetooth Low Energy, el iBeacon anterior se puede emitir mediante la emisión de los siguientes comandos en Linux a un dispositivo Bluetooth 4 Low Energy compatible con un kernel moderno: [28]
(Establecer parámetros de publicidad LE)hcitool -i hci0 cmd 0x08 0x0006 a0 00 a0 00 03 00 00 00 00 00 00 00 00 07 00################################ a0 00: Intervalo mínimo de anuncios (Little Endian de 16 bits) (0,625 ms* 00 a0)###################################### a0 00: Intervalo máximo de anuncios (Little Endian de 16 bits) (0,625 ms* 00 a0)
(Establecer datos de publicidad LE)hcitool -i hci0 cmd 0x08 0x0008 1E 02 01 06 1A FF 4C 00 02 15 FB 0B 57 A2 82 28 44 CD 91 3A 94 A1 22 BA 12 06 00 01 00 02 D1 00################################ 1E: Número total de bytes ADV, no puede ser más de 1F (longitud máxima del anuncio BLE: 31 bytes)################################### 02 01 06 1A FF 4C 00 02 15: Prefijo publicitario iBeacon de Apple
(Habilitar publicidad LE)hcitool -i hci0 cmd 0x08 0x000a 01
Para que la configuración del intervalo de retransmisión (primero de los comandos anteriores) vuelva a funcionar, la transmisión debe detenerse con:
(Desactivar anuncio LE)hcitool -i hci0 cmd 0x08 0x000a 00
Los dispositivos que ejecutan el sistema operativo Android anterior a la versión 4.3 solo pueden recibir anuncios de iBeacon, pero no pueden emitirlos. Android 5.0 ("Lollipop") agregó soporte para los modos central y periférico. [29]
Byte 0-2: Indicadores BLE estándar (no necesarios, pero estándar)
Byte 0: Longitud: 0x02 Byte 1: Tipo: 0x01 (Banderas) Byte 2: Valor: 0x06 (indicadores típicos 0b00000110) (modo de detección general LE, BR/EDR no compatible)
Byte 3-29: Datos de iBeacon definidos por Apple
Byte 3: Longitud: 0x1a (De la siguiente sección) Byte 4: Tipo: 0xff (datos del fabricante personalizados) Byte 5-6: ID del fabricante: 0x4c00 (código de empresa registrado de Bluetooth SIG de Apple, Little Endian de 16 bits) Byte 7: Subtipo: 0x02 (datos de fabricante personalizados del tipo iBeacon de Apple) Byte 8: Subtipo Longitud: 0x15 (Del resto de los datos de iBeacon; UUID + Mayor + Menor + TXPower) Byte 9-24: UUID de proximidad (UUID aleatorio o público/registrado de la baliza específica) Byte 25-26: Mayor (valor definido por el usuario) Byte 27-28: Menor (valor definido por el usuario) Byte 29: Potencia medida (valor con signo de 8 bits, rango de -128 a 127, use el complemento a dos para "convertir" si es necesario, Unidades: Potencia de transmisión medida en dBm a 1 metro de la baliza) (Configurada por el usuario, no dinámica, se puede usar junto con el RSSI recibido en un receptor para calcular la distancia aproximada a la baliza)
A diferencia de iOS, Android no tiene compatibilidad nativa con iBeacon. Debido a esto, para usar iBeacon en Android, un desarrollador debe usar una biblioteca existente o crear código que analice los paquetes BLE para encontrar anuncios de iBeacon. La compatibilidad con BLE se introdujo en Android Jelly Bean con importantes correcciones de errores en Android KitKat . A partir de entonces, se han agregado progresivamente mejoras de estabilidad y funciones BLE adicionales, con una importante mejora de estabilidad en la versión 6.01 de Android Marshmallow que evita fugas de conexión entre aplicaciones.
Por diseño, el marco publicitario de iBeacon es claramente visible. Esto deja la puerta abierta para que las partes interesadas capturen, copien y reproduzcan los marcos publicitarios de iBeacon en diferentes ubicaciones físicas. Esto se puede hacer simplemente emitiendo la secuencia correcta de comandos a los dispositivos USB Bluetooth 4.0 compatibles. En febrero de 2014 se informó de una suplantación exitosa de iBeacons de la tienda de Apple. [30] Esto no es una falla de seguridad en el iBeacon per se, pero los desarrolladores de aplicaciones deben tener esto en cuenta al diseñar sus aplicaciones con iBeacons.
PayPal ha adoptado un enfoque más sólido, en el que el iBeacon es simplemente el comienzo de una negociación de seguridad compleja ( autenticación de desafío-respuesta ). No es probable que sea pirateado, ni tampoco es probable que sea interrumpido por copias de balizas. [31]
Para escuchar iBeacon se pueden utilizar los siguientes comandos con una distribución Linux moderna:
hcitool -i hci0 lescan --passive --duplicatesD6:EE:D4:16:ED:FC (desconocido)F6:BE:90:32:3C:5E (desconocido)...
En otra terminal, ejecute el programa de volcado de protocolo:
hcidump-R-ihci0> 04 3E 2A 02 01 00 01 ED 16 D4 EE D6 1E 02 01 06 1A FF 4C 00 02 15 B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D ED FC D4 16 B6 B4...
Consulte Bluetooth Core Spec. Volumen 4, Parte E, 7.7.65.2: LE Meta Event::LE Advertising Report Sub-Event, para obtener detalles sobre la salida de hcidump.
La dirección MAC del iBeacon y su carga útil son claramente identificables. La secuencia de comandos en los detalles técnicos se puede utilizar para reproducir la trama del iBeacon.
Si bien el entorno NFC es muy diferente y tiene muchas aplicaciones que no se superponen, aún es comparable con los iBeacons.
El alcance del NFC es de hasta 20 cm (7,87 pulgadas), pero el alcance óptimo es inferior a 4 cm (1,57 pulgadas). Los iBeacons tienen un alcance significativamente mayor.
No todos los teléfonos incorporan chips NFC. El primer modelo de iPhone de Apple que incluyó chips NFC fue el iPhone 6, presentado en septiembre de 2014, pero la mayoría de los teléfonos modernos ya tenían la capacidad de Bluetooth 4.0 o posterior desde varios años antes.