Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]

Post on 08-Jul-2015

284 views 1 download

Tags:

description

How an iOS developer can integrate BLE and iBeacons in his app? This talk explain the various API that Apple allow to be used and the iBeacon standard for proximity apps.

Transcript of Bluetooth 4.0 and iBeacons in your iOS [Codemotion Milan 2014]

MILAN november 28th/29th, 2014

Bluetooth 4.0 and iBeacons in your iOS app francesco.nove@gmail.com - RunCode @if9 runcode.it

Francesco Novelli

MILAN november 28th/29th, 2014 – Francesco Novelli

Chi sono?

1.  Appassionato di tecnologia! 2.  Freelance! 3.  iOS Developer 4.  Blogger per devApp.it 5.  Ex Scrittore di libri 6.  Ex Web Developer

MILAN november 28th/29th, 2014 – Francesco Novelli

Thanks to:

blinkar

http://blinkar.it

MILAN november 28th/29th, 2014 – Francesco Novelli

Agenda:

•  Bluetooth 4.0 •  iBeacons •  Beacons alternatives •  iOS 7…7.1….8!

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0: cos’è?

•  BLE: Bluetooth Low Energy

•  Standard, niente draft! (dal 2010)

•  Chip diverso da 3.0 e non retro compatibile

•  Dual Chip Device

MILAN november 28th/29th, 2014 – Francesco Novelli

LOW ENERGY!!!!

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0: Le novità “minori”

•  Niente abbinamenti, accoppiamenti, PIN, attese •  Advertising continuo (se acceso…) •  Low energy

MIN 0.01 - MAX 0.5 Old Bluetooth 1

•  Meno Range (50m vs 100m) •  Meno Throughput (0.27Mbit/s vs 2.1 Mbit/s) •  Meno Latency (6ms vs 100ms)

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0: A cosa non serve

•  Auricolari •  Scambio dati •  Cuffie •  … •  e quindi??

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0: A cosa serve

•  IoT Internet of Things •  Orologi (Apple Watch, Android Wear, Pebble) •  Sport e device fitness •  Healtcare •  Security •  Proxymity •  Automation •  Everything!

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0: Profili di utilizzo

•  GATT: is.gd/blegatt •  Da leggere per

developer •  Da leggere per ogni

hardware makers •  Adattare il device BLE

con i profili

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0 e iOS

•  CoreBluetooth •  iOS e Mac OS X •  Bluetooth ad alto livello

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0 e iOS

•  CBCentralManager: •  CBPeripheral: device bluetooth •  CBService: servizi del device •  CBCharacteristic: informazioni del servizio

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0 e iOS

CBCentralManager:

CBPeripheral

CBService

CBCharacteristic

X

123

MILAN november 28th/29th, 2014 – Francesco Novelli

DEMO

MILAN november 28th/29th, 2014 – Francesco Novelli

Bluetooth 4.0 e iOS

•  iPhone 4s + •  Mac

Thanks to theapplelounge.com

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon

•  Cos’è? •  Come funziona? •  Dove si trova? •  Quanto costa? •  Come lo uso?

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon

iBeacon, a new class of low-powered, low-cost transmitters that can notify nearby iOS 7 devices of their presence, provides apps a whole new level of location awareness, such as trail markers in a park, exhibits in a museum, or product displays in stores.

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: notify…what?

•  UDID (Hex ID) •  Major (Int) •  Minor (Int) •  … •  Sempre! •  A chiunque, in broadcasting

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Sample

•  UUDID: E2C56DB5-DFFB-48D2-B060-D0F5A71096E0 Museo Uffizi

•  Major: int 2 Piano 2

•  Minor: int 13 Quadro 13

•  quindi…

•  sei nel Museo al secondo piano davanti al quadro 13. propongo audio guida per quel quadro.

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: cos’è fisicamente?

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon da iDevice

•  CoreBluetooth.framework (AirLocate sample code)

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

NSDictionary *peripheralData = nil; !if(_uuid && _major && _minor) !{ !CLBeaconRegion *region = ![[CLBeaconRegion alloc] initWithProximityUUID:_uuid !

major:[_major shortValue] ! minor:[_minor shortValue] !

identifier:@"com.apple.AirLocate"]; !peripheralData = [region peripheralDataWithMeasuredPower:_power]; !}

[_peripheralManager startAdvertising:peripheralData];

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Gli altri

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Estimote

•  Largamente apprezzati •  Versione stickers (accelerometro e

temperatura) •  Custom SDK •  Android SDK •  Costo elevato

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Gimbal

•  Qualcomm! •  Prezzo basso •  Programmabili via iPhone •  SDK potenziato (non obbligatorio) •  Controllo via web (con SDK proprietario) •  Android SDK •  Consumo batteria da rivedere •  Versione Tag o Device

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Consumi

http://is.gd/ibeaconcomp

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Come lo uso?

NOTIFY MONITORING

MILAN november 28th/29th, 2014 – Francesco Novelli

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Notify

•  CLLocationManager e delegate •  Metodo delegate chiamato ad ogni entrata o

uscita da una CLBeaconRegion (campo iBeacon)

•  Disponibile anche ad app in background •  Si può osservare un UUID o una iBeacon

(UUID + Major + Minor)

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Notify

_locationManager = [[CLLocationManager alloc] init]; !_locationManager.delegate = self; ! !CLBeaconRegion *region = nil; !_uuid = [[NSUUID alloc] initWithUUIDString:@“E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"]; !region = ![[CLBeaconRegion alloc] initWithProximityUUID:_uuid!

identifier:@"com.apple.AirLocate"]; !region.notifyOnEntry = YES; !region.notifyOnExit = YES; !region.notifyEntryStateOnDisplay = YES; ! ![_locationManager startMonitoringForRegion:region];

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Notify delegate

-  (void)locationManager:(CLLocationManager *)manager ! didEnterRegion:(CLRegion *)region;

-  (void)locationManager:(CLLocationManager *)manager ! didExitRegion:(CLRegion *)region;

- (void)locationManager:(CLLocationManager *)manager !      didDetermineState:(CLRegionState)state !              forRegion:(CLRegion *)region; !

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Notify, quando?

•  Location awareness push notification •  Interattività dell’app •  Pagamenti

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Monitoring

•  CLLocationManager e delegate •  Metodo del delegate invocato ogni secondo (se

ci sono 1 o più beacon) •  Array di beacons

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Monitoring

_locationManager = [[CLLocationManager alloc] init]; !_locationManager.delegate = self; ! !CLBeaconRegion *region = nil; !_uuid = ![[NSUUID alloc] initWithUUIDString:@“E2C56DB5-DFFB-48D2-B060-D0F5A71096E0"]; !region = [[CLBeaconRegion alloc] initWithProximityUUID:_uuid

identifier:@"com.apple.AirLocate"]; ![_locationManager startRangingBeaconsInRegion:region]; !!!- (void)locationManager:(CLLocationManager *)manager ! didRangeBeacons:(NSArray *)beacons! inRegion:(CLBeaconRegion *)region { !!!

NSLog(@"Major: %@, Minor: %@, Acc: %.2fm %li", beacon.major, beacon.minor, beacon.accuracy, beacon.proximity); !!}

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Monitoring, quando?

•  Geofencing al chiuso •  Elencare beacons vicini •  Ottenere le distanza da un beacon •  Visualizzare informazioni con app aperta

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: iOS Roadmap

•  7.0 Introduzione •  7.1 Notify con app killate

Velocità maggiore per le notifiche •  8.0 Continuity Icon

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Case history

•  MLB •  Virgin •  Apple Store •  Musei Palazzo Farnese •  Nazioni unite •  Parchi floreali •  Caccia al tesoro •  …

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Android

•  Android 4.3+ (e.g. Samsung Galaxy S3/S4/S4 Mini, Samsung Galaxy Note 2/3, HTC One, Google/LG Nexus 7 2013 version/Nexus 4/Nexus 5, HTC Butterfly, OnePlus One)

•  SDK produttori (Gimbal, Estimote, etc) •  AltBeacon Project

MILAN november 28th/29th, 2014 – Francesco Novelli

iBeacon: Resources

•  iBeacon Bible •  developer.apple.com/ibeacon •  WWDC 2014 Session 307 – What’s New In

Core Location •  AirLocate Sample Code

MILAN november 28th/29th, 2014

Bluetooth 4.0 and iBeacons in your iOS app francesco.nove@gmail.com - RunCode @if9 runcode.it

Thanks Francesco Novelli