MILAN november 28th/29th, 2014
Bluetooth 4.0 and iBeacons in your iOS [email protected] - [email protected]
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 [email protected] - [email protected]
ThanksFrancesco Novelli