Bluetooth 4.0 and iBeacons in your iOS app - Francesco Novelli - Codemotion Milan 2014

Post on 05-Jul-2015

151 views 0 download

description

With iOS 7 Apple introduced iBeacons. It's a new API based on Bluetooth 4.0 called Bluetooth Low Energy. In this we will see how everyone can use iBeacons to create great iOS app, also if you aren't an hardware guy. A small part of the talk will explain how to use CoreBluetooth framework to connect to BLE devices. After this talk you will be able to use Bluetooth 4.0 easily in you app.

Transcript of Bluetooth 4.0 and iBeacons in your iOS app - Francesco Novelli - Codemotion Milan 2014

MILAN november 28th/29th, 2014

Bluetooth 4.0 and iBeacons in your iOS appfrancesco.nove@gmail.com - RunCode@if9runcode.it

Francesco Novelli

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

Chi sono?

1. Appassionato di tecnologia!2. Freelance!3. iOS Developer4. Blogger per devApp.it5. Ex Scrittore di libri6. 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

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 appfrancesco.nove@gmail.com - RunCode@if9runcode.it

ThanksFrancesco Novelli