SlideShare una empresa de Scribd logo
¿Qué es un iBeacon y
como funciona?

Pedro Muñoz Cabrera

pmunoz08@gmail.com

@pmunoz08
Qué es un beacon?
No es bacon, es beacon!!!

Su inicio data del 2007, cuando Nokia creó Wibree, punto de inicio de
BLE.

Funciona bajo el protocolo BLE (Bluetooth 4.0) junio 2010

Indoor positioning sytem o “System Advertising”.

Envía información contínuamente, no necesario ser enlazado

CB 4.0 emite en una frecuencia de 2.4GHz, divididos en 39 canales de
2.0 MHz. (36 primeros para intercambio de datos con dispositivos enlazados, los otros 3 son
los usados para “Advertising”)

Alcamce 50-70m dependiendo de posibles interferencias.
y un iBeacon?
Es el nombre comercial acuñado por Apple para los beacons.

“a new class of low-powered, low-cost transmitters that can notify nearby iOS
7 devices of their presence.” WWDC 2013

Soportado por :

iPhone 4S y posteriores

iPad3 y posteriores

iPod touch 5ª generación

Macs con Mavericks y Bluetooth 4.0
y un iBeacon?
!
Aunque Bluetooth 4.0 está soportado desde iOS 5.0 hasta iOS 7 no hemos contado
una api para trabjar con beacons incluyendo en el Framework Core Location:

Nuevos métodos en el protocolo CLLocationManagerDelegate

CLBeacon

CLBeaconRegion


Dentro Bluetooth LE hay dos grupos o conceptos:

Peripheral. Informan de servicios y expone sus características (properties).

Central. Buscar servicios y leen/escriben las propiedades del mismo.

Un iBeacon es un “Peripheral” que expone sus características pero no es un
servicio BLE
CLLocationManagerDelegate
Para poder interactuar con iBeacons en iOS7 se han añadido algunos métodos al
protocolo CLLocationMAnagerDelegate:

locationManager:didDetermineState:forRegion:
El CLLocationManager llama a este método cuando se pasa la frontera de una region.
CLREgionState: (CLRegionStateUnknown, CLRegionStateInside, CLRegionStateOutside)


locationManager:didRangeBeacons:inRegion:
El CLLocationMAnager llama a este método cuando detecta beacons o dejar de
detectarlos. Los iBeacosn detectados se reciben en un aray ordenados por proximidad.
El más cercano el primero.



locationManager:rangingBeaconsDidFailForRegion:withError:
Si una CLBeaconRegion contiene datos no válidos o falla al registrase.


requestStateForRegion:
Nos permite preguntar por estado del dispositivo en relación con una región.
CLBeacon
Hereda de NSObject y representa alos iBeacons encontrados en
una CLBeaconRegion.

Nos provee de las siguientes propiedades:

proximityUUID. Un ID global, por ejemplo para identificar una compañía.

major y minor. Permite crear áreas o secciones de beacons

proximity. Distancia relativa a un iBeacon (Inmediate, Near, Far, Unknown)

accuracy. Distancia en metros. No posición exacta

rssi. Fuerza de la señal recibida medida en Db

Crear un uuid en terminal

$ uuidgen
F33AA853-94A8-4912-8BCF-D2EF6C2EF36F
CLBeaconRegion
Hereda de CLRegion, define una región basada en la proximidad de un
dispositivo a un CLBeacon. Nos ofrece 3 inicializadores:

initWithProximityUUID:identifier:

initWithProximityUUID:major:identifier:

initWithProximityUUID:major:minor:identifier:


!
CLBeaconRegion *region = [[CLBeaconRegion alloc]
initWithProximityUUID:uuid
major:major
minor:minor
identifier:kBeaconIdentifier];
CLBeaconRegion
Propiedades:

notifyEntryStayOnDisplay. Si su valor es YES, envía
notificaciones de beacons, cuando el usuario enciende la pantalla del
dispositivo y está dentro de la región, incluso si la app no está
corriendo, en este caso la app se lanza en background. Ojo que la app
no esté corriendo se refiere a que esté inactiva porque la ha parado el
SO, si la apara el usuario, la app no recibirá notificaciones. Default NO


CLRegion:

notifyOnEntry. llamará a locationManager:didEnterRegion:
cunado se entre en una región .Default Yes


notifyOnExit. llamará a locationManager:didExitRegion:
cunado se salga en una región .Default Yes
Monitoring iBeacons
!

self.locManager = [[CLLocationManager alloc] init];
[self.locManager setDelegate:self];
if ([CLLocationManager isRangingAvailable]) {
NSLog(@"Beacon ranging available");

NSUUID *proximityUUID = [[NSUUID alloc]
initWithUUIDString:UUIDiBeacon];
self.beaconRegion = [[CLBeaconRegion alloc]
initWithProximityUUID:proximityUUID identifier:@"com.softpmc.beacons"];

!

[self.beaconRegion setNotifyEntryStateOnDisplay:YES];
[self.locManager startMonitoringForRegion:self.beaconRegion];
}
Ranging iBeacons
#pragma mark - CLLocationManagerDelegate

!

- (void)locationManager:(CLLocationManager *)manager didDetermineState:
(CLRegionState)state forRegion:(CLRegion *)region{
if (state == CLRegionStateInside) {

!
}

[self.locManager startRangingBeaconsInRegion:(CLBeaconRegion *)region];
} else {
}

[self.locManager stopRangingBeaconsInRegion:(CLBeaconRegion *)region];

!

- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray
*)beacons inRegion:(CLBeaconRegion *)region {
if ([beacons count] != 0) {
for (CLBeacon *beacon in beacons) {
//Do something

}

}

}
CLBeaconRegion
Métodos:

peripheralDataWithMeasuredPower:
Devuelve un diccionario con la información que identifica al beacon codificada
además de la información a trnasmitir. Este diccionario se debe pasar a una
instancia de CBPeropheralMAnager al método startAdvertising. Este es uno de
los pasos a realizar para convertir nuestro dispositivo en un iBeacon. Lo veremos
despues en un ejemplo.


El parámetro measuredPower es opcional, representa la medida de la
fuerza de la señal a 1 metro de distancia del beacon.
Donde encuentro un iBeacon?
Posiblemente lleves un potencial iBeacon en el bolsillo :-).
Como hemos visto un iPhone puede funcionar como iBeacon,
lo veremos en una Demo.
Donde encuentro un iBeacon?
Posiblemente lleves un potencial iBeacon en el bolsillo :-). Como
hemos visto un iPhone puede funcionar como iBeacon, lo veremos en
una Demo.

_peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self
queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];

!

!

CLBeaconRegion *region = [[CLBeaconRegion alloc]
initWithProximityUUID:uuid
major:major
minor:minor
identifier:kBeaconIdentifier];

NSDictionary *peripheralData = [region
peripheralDataWithMeasuredPower:nil];
[_peripheralManager startAdvertising:peripheralData];

!

//opcional
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
Donde encuentro un iBeacon?
!
Además, acutalmente hay varios fabricantes que comercializan iBeacons e
imagino que el número crecerá, algunos son estos:

RedBearLAb, plug in board for arduino http:/
/redbearlab.com/
bleshield

Kontakt http:/
/kontakt.io/order-now

GeoHopper http:/
/geohopper.com/bleu/pricing

Estimote http:/
/estimote.com

Remotte http:/
/remotte.com




De las opciones de arriba la que me parecío más interesante fué la de
Estimote.
Qué oferece Estimote?
Los iBeacons distribuidos por Estimote tienen las siguientes carácterísticas:

CPU 32.bit ARM Cortex con 256kb de memoria flash.

Acelerómetro.

Sensor de temperatura.

SDK, realmente es un wrapper de CLLocationManager,
CLBeaconRegion y CLBeacon. A parte de ofrecerte una api para
modificar la configuración de los iBeacons (No el proximityUUID, viene
fijo de fábrica), actualizar el firmaware, modificar la frecuencia de
emisión,....

Autonomía de 2 años y alcance de 70 metros (en un escenaro ideal,
sin interferencias)

Es estanco afirman que puede funcionar bajo el agua.

Si he de decir, que está en versión beta y el SDK, no permite exprimir al
máximo los ibeacons aún.
Qué usos se le puede
dar a un iBeacon?
Geoposicionamiento “indoor”, crear zonas, Proximidad,...lo que se
te ocurra a partir de la detección de 1 punto o región.

En Passkit, ahora podemos añadir en el json el uuid y el texto a
mostrar, el dispositivo detectará el beacon cuando esté cerca de
él y mostrará una alaerta con el texto indicado.

En combinación con el nuevo Framework Multipeer Connectivity,
para detectar usuarios o apps, con las que puedas intercambiar
información, alertando al usuario de ello.
Casos de uso
iBeacons Used To Deliver Location-Based Access To iOS Newsstand
Publications

Macy's tests location-specific store discounts using Apple's iBeacon

Apple Feature to Turn MLB Stadiums Into Interactive
Playgrounds

PayPal Beacon
Demo
Pedro Muñoz

pmunoz08@gmail.com

@pmunoz08
Enlaces de Interés
Bibliografía

Bluetooth Low Energy, Beacons and Retail

With iBeacon, Apple is going to dump on NFC and embrace the
internet of things

What’s New in Core Location WWDC 2013

Core Location Framework Reference

Can you Smell the iBeacon?

Reverse Engineering the Estimote
Enlaces de Interés
Código ejemplo:

Demo 1. iBeacon Emitter for iOS

Demo2. Working with iBeacons

Beacon emitter for Mac

iOS 7 SDK: iBeacons Game
Gracias
Pedro Muñoz

pmunoz08@gmail.com

@pmunoz08

Más contenido relacionado

PDF
Subnete
PDF
Subneteo
PDF
Programación Orientada a Protocolos (NSCoder Night Madrid)
PDF
iBeacon for Dummies
PPTX
PDF
iBeacons Localización contextual
PDF
iBeacon - Conectar el mundo real con experiencias móviles - Freakend15
PDF
Beacons para Retail
Subnete
Subneteo
Programación Orientada a Protocolos (NSCoder Night Madrid)
iBeacon for Dummies
iBeacons Localización contextual
iBeacon - Conectar el mundo real con experiencias móviles - Freakend15
Beacons para Retail

Similar a iBeacons (9)

PDF
S2 - Beacons_50504242028.pdf para aprender internet de las cosas
PPTX
TECNOLOGÍA BEACON
PDF
Globant Wearables & Internet of Things - Presentación Mar del Plata Agosto 2014
PDF
Radar para balizas Bluetooth
PDF
Solid Day - Beacons
PDF
Dossier aplicaciones móviles indoor location con beacons digiworks
PPT
APNS para "casi" todos
PDF
Doctor arroba - ¿Que es el ibeacon ?
PDF
Indoor Location
S2 - Beacons_50504242028.pdf para aprender internet de las cosas
TECNOLOGÍA BEACON
Globant Wearables & Internet of Things - Presentación Mar del Plata Agosto 2014
Radar para balizas Bluetooth
Solid Day - Beacons
Dossier aplicaciones móviles indoor location con beacons digiworks
APNS para "casi" todos
Doctor arroba - ¿Que es el ibeacon ?
Indoor Location
Publicidad

Más de Jorge Ortiz (12)

PDF
Fiscalidad en el app store 2014
PDF
Fiscalidad en el app store 2014
PDF
Automatización de interfaces e introducción a bdd
PDF
Ui design patterns
PDF
Multipeer Connectivity Framework
PDF
Kata tdd
PDF
Autolayout
PDF
Crashlitycs
PDF
¿Cuánto cuesta una app?
KEY
Runtime
PPTX
Aplicaciones para iphone accesibles
PDF
Introduccion a core plot
Fiscalidad en el app store 2014
Fiscalidad en el app store 2014
Automatización de interfaces e introducción a bdd
Ui design patterns
Multipeer Connectivity Framework
Kata tdd
Autolayout
Crashlitycs
¿Cuánto cuesta una app?
Runtime
Aplicaciones para iphone accesibles
Introduccion a core plot
Publicidad

Último (20)

PPTX
la-historia-de-la-medicina Edna Silva.pptx
PPTX
modulo seguimiento 1 para iniciantes del
PDF
CyberOps Associate - Cisco Networking Academy
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Presentación de Redes de Datos modelo osi
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PDF
Maste clas de estructura metálica y arquitectura
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
TRABAJO DE TECNOLOGIA.pdf...........................
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
Curso de generación de energía mediante sistemas solares
la-historia-de-la-medicina Edna Silva.pptx
modulo seguimiento 1 para iniciantes del
CyberOps Associate - Cisco Networking Academy
Documental Beyond the Code (Dossier Presentación - 2.0)
Estrategia de Apoyo de Daylin Castaño (5).pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Presentación de Redes de Datos modelo osi
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Guía 5. Test de orientación Vocacional 2.docx
introduccion a las_web en el 2025_mejoras.ppt
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
Historia Inteligencia Artificial Ana Romero.pptx
Maste clas de estructura metálica y arquitectura
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
El-Gobierno-Electrónico-En-El-Estado-Bolivia
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
TRABAJO DE TECNOLOGIA.pdf...........................
historia_web de la creacion de un navegador_presentacion.pptx
Curso de generación de energía mediante sistemas solares

iBeacons

  • 1. ¿Qué es un iBeacon y como funciona? Pedro Muñoz Cabrera pmunoz08@gmail.com @pmunoz08
  • 2. Qué es un beacon? No es bacon, es beacon!!! Su inicio data del 2007, cuando Nokia creó Wibree, punto de inicio de BLE. Funciona bajo el protocolo BLE (Bluetooth 4.0) junio 2010 Indoor positioning sytem o “System Advertising”. Envía información contínuamente, no necesario ser enlazado CB 4.0 emite en una frecuencia de 2.4GHz, divididos en 39 canales de 2.0 MHz. (36 primeros para intercambio de datos con dispositivos enlazados, los otros 3 son los usados para “Advertising”) Alcamce 50-70m dependiendo de posibles interferencias.
  • 3. y un iBeacon? Es el nombre comercial acuñado por Apple para los beacons. “a new class of low-powered, low-cost transmitters that can notify nearby iOS 7 devices of their presence.” WWDC 2013 Soportado por : iPhone 4S y posteriores iPad3 y posteriores iPod touch 5ª generación Macs con Mavericks y Bluetooth 4.0
  • 4. y un iBeacon? ! Aunque Bluetooth 4.0 está soportado desde iOS 5.0 hasta iOS 7 no hemos contado una api para trabjar con beacons incluyendo en el Framework Core Location: Nuevos métodos en el protocolo CLLocationManagerDelegate CLBeacon CLBeaconRegion Dentro Bluetooth LE hay dos grupos o conceptos: Peripheral. Informan de servicios y expone sus características (properties). Central. Buscar servicios y leen/escriben las propiedades del mismo. Un iBeacon es un “Peripheral” que expone sus características pero no es un servicio BLE
  • 5. CLLocationManagerDelegate Para poder interactuar con iBeacons en iOS7 se han añadido algunos métodos al protocolo CLLocationMAnagerDelegate: locationManager:didDetermineState:forRegion: El CLLocationManager llama a este método cuando se pasa la frontera de una region. CLREgionState: (CLRegionStateUnknown, CLRegionStateInside, CLRegionStateOutside) locationManager:didRangeBeacons:inRegion: El CLLocationMAnager llama a este método cuando detecta beacons o dejar de detectarlos. Los iBeacosn detectados se reciben en un aray ordenados por proximidad. El más cercano el primero. locationManager:rangingBeaconsDidFailForRegion:withError: Si una CLBeaconRegion contiene datos no válidos o falla al registrase. requestStateForRegion: Nos permite preguntar por estado del dispositivo en relación con una región.
  • 6. CLBeacon Hereda de NSObject y representa alos iBeacons encontrados en una CLBeaconRegion. Nos provee de las siguientes propiedades: proximityUUID. Un ID global, por ejemplo para identificar una compañía. major y minor. Permite crear áreas o secciones de beacons proximity. Distancia relativa a un iBeacon (Inmediate, Near, Far, Unknown) accuracy. Distancia en metros. No posición exacta rssi. Fuerza de la señal recibida medida en Db Crear un uuid en terminal $ uuidgen F33AA853-94A8-4912-8BCF-D2EF6C2EF36F
  • 7. CLBeaconRegion Hereda de CLRegion, define una región basada en la proximidad de un dispositivo a un CLBeacon. Nos ofrece 3 inicializadores: initWithProximityUUID:identifier: initWithProximityUUID:major:identifier: initWithProximityUUID:major:minor:identifier: ! CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:major minor:minor identifier:kBeaconIdentifier];
  • 8. CLBeaconRegion Propiedades: notifyEntryStayOnDisplay. Si su valor es YES, envía notificaciones de beacons, cuando el usuario enciende la pantalla del dispositivo y está dentro de la región, incluso si la app no está corriendo, en este caso la app se lanza en background. Ojo que la app no esté corriendo se refiere a que esté inactiva porque la ha parado el SO, si la apara el usuario, la app no recibirá notificaciones. Default NO CLRegion: notifyOnEntry. llamará a locationManager:didEnterRegion: cunado se entre en una región .Default Yes notifyOnExit. llamará a locationManager:didExitRegion: cunado se salga en una región .Default Yes
  • 9. Monitoring iBeacons ! self.locManager = [[CLLocationManager alloc] init]; [self.locManager setDelegate:self]; if ([CLLocationManager isRangingAvailable]) { NSLog(@"Beacon ranging available"); NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDString:UUIDiBeacon]; self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID identifier:@"com.softpmc.beacons"]; ! [self.beaconRegion setNotifyEntryStateOnDisplay:YES]; [self.locManager startMonitoringForRegion:self.beaconRegion]; }
  • 10. Ranging iBeacons #pragma mark - CLLocationManagerDelegate ! - (void)locationManager:(CLLocationManager *)manager didDetermineState: (CLRegionState)state forRegion:(CLRegion *)region{ if (state == CLRegionStateInside) { ! } [self.locManager startRangingBeaconsInRegion:(CLBeaconRegion *)region]; } else { } [self.locManager stopRangingBeaconsInRegion:(CLBeaconRegion *)region]; ! - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region { if ([beacons count] != 0) { for (CLBeacon *beacon in beacons) { //Do something } } }
  • 11. CLBeaconRegion Métodos: peripheralDataWithMeasuredPower: Devuelve un diccionario con la información que identifica al beacon codificada además de la información a trnasmitir. Este diccionario se debe pasar a una instancia de CBPeropheralMAnager al método startAdvertising. Este es uno de los pasos a realizar para convertir nuestro dispositivo en un iBeacon. Lo veremos despues en un ejemplo. El parámetro measuredPower es opcional, representa la medida de la fuerza de la señal a 1 metro de distancia del beacon.
  • 12. Donde encuentro un iBeacon? Posiblemente lleves un potencial iBeacon en el bolsillo :-). Como hemos visto un iPhone puede funcionar como iBeacon, lo veremos en una Demo.
  • 13. Donde encuentro un iBeacon? Posiblemente lleves un potencial iBeacon en el bolsillo :-). Como hemos visto un iPhone puede funcionar como iBeacon, lo veremos en una Demo. _peripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; ! ! CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:major minor:minor identifier:kBeaconIdentifier]; NSDictionary *peripheralData = [region peripheralDataWithMeasuredPower:nil]; [_peripheralManager startAdvertising:peripheralData]; ! //opcional [[UIApplication sharedApplication] setIdleTimerDisabled: YES];
  • 14. Donde encuentro un iBeacon? ! Además, acutalmente hay varios fabricantes que comercializan iBeacons e imagino que el número crecerá, algunos son estos: RedBearLAb, plug in board for arduino http:/ /redbearlab.com/ bleshield Kontakt http:/ /kontakt.io/order-now GeoHopper http:/ /geohopper.com/bleu/pricing Estimote http:/ /estimote.com Remotte http:/ /remotte.com De las opciones de arriba la que me parecío más interesante fué la de Estimote.
  • 15. Qué oferece Estimote? Los iBeacons distribuidos por Estimote tienen las siguientes carácterísticas: CPU 32.bit ARM Cortex con 256kb de memoria flash. Acelerómetro. Sensor de temperatura. SDK, realmente es un wrapper de CLLocationManager, CLBeaconRegion y CLBeacon. A parte de ofrecerte una api para modificar la configuración de los iBeacons (No el proximityUUID, viene fijo de fábrica), actualizar el firmaware, modificar la frecuencia de emisión,.... Autonomía de 2 años y alcance de 70 metros (en un escenaro ideal, sin interferencias) Es estanco afirman que puede funcionar bajo el agua. Si he de decir, que está en versión beta y el SDK, no permite exprimir al máximo los ibeacons aún.
  • 16. Qué usos se le puede dar a un iBeacon? Geoposicionamiento “indoor”, crear zonas, Proximidad,...lo que se te ocurra a partir de la detección de 1 punto o región. En Passkit, ahora podemos añadir en el json el uuid y el texto a mostrar, el dispositivo detectará el beacon cuando esté cerca de él y mostrará una alaerta con el texto indicado. En combinación con el nuevo Framework Multipeer Connectivity, para detectar usuarios o apps, con las que puedas intercambiar información, alertando al usuario de ello.
  • 17. Casos de uso iBeacons Used To Deliver Location-Based Access To iOS Newsstand Publications Macy's tests location-specific store discounts using Apple's iBeacon Apple Feature to Turn MLB Stadiums Into Interactive Playgrounds PayPal Beacon
  • 19. Enlaces de Interés Bibliografía Bluetooth Low Energy, Beacons and Retail With iBeacon, Apple is going to dump on NFC and embrace the internet of things What’s New in Core Location WWDC 2013 Core Location Framework Reference Can you Smell the iBeacon? Reverse Engineering the Estimote
  • 20. Enlaces de Interés Código ejemplo: Demo 1. iBeacon Emitter for iOS Demo2. Working with iBeacons Beacon emitter for Mac iOS 7 SDK: iBeacons Game