Integrating i beacons into your project appsterdam lunchtime lecture 12 feb 2014

Post on 08-May-2015

643 views 2 download

description

This presentation was given at the Appsterdam Lunchtime Lecture on 12th Feb 2014 by Jonathan Carter of GlimwormBeacons. It explains some background about iBeacons and some practical tips about using them in your projects. It also gives some product details of GlimwormBeacons which are Apple iBeacon compatible sensors manufactured in the Netherlands.

transcript

J Carter / Glimworm IT BVand.. Glimworm Beacons

12th Feb 2014Appsterdam Lunchtime Lecture

integrating iBeaconsinto yourproject

Friday, 14 February 14

Concepts

•Monitoring

•Ranging

•Advertising

Friday, 14 February 14

Monitoring

Friday, 14 February 14

MonitoringInside

Inside

InsideInside

InsideInsideInside

Friday, 14 February 14

Monitoring

Friday, 14 February 14

Friday, 14 February 14

#import <UIKit/UIKit.h>#import <CoreLocation/CoreLocation.h>

@interface glimbeaconViewController : UIViewController <CLLocationManagerDelegate>

@end

Friday, 14 February 14

@implementation glimbeaconViewController{ NSMutableDictionary *_beacons; CLLocationManager *_locationManager; NSMutableArray *_rangedRegions; CLBeaconRegion *_region;

}...

- (void)viewDidLoad{ [super viewDidLoad]; _locationManager = [[CLLocationManager alloc] init]; _locationManager.delegate = self;}

- (void) locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{

if ([beacons count] > 0) {

// Handle your found beacons here CLBeacon *beacon = [beacons objectAtIndex:0]; NSString *_cnt = [[NSString alloc] initWithFormat:@"Number of beacons is : %lu and the first one is %f away from you",(unsigned long)[beacons count],beacon.accuracy]; NSLog(_cnt); } else { NSLog(@"there are no beacons in range"); }}

-(void)viewDidAppear:(BOOL)animated{ NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDString:@"74278bda-b644-4520-8f0c-720eaf059935"]; _region = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID identifier:@"Glimworm iBeacon"]; [_locationManager startRangingBeaconsInRegion:_region];

}-(void) viewDidDisappear:(BOOL)animated{ [_locationManager stopRangingBeaconsInRegion:_region];

}

Friday, 14 February 14

-(void)viewDidAppear:(BOOL)animated{ NSUUID *proximityUUID = [[NSUUID alloc] initWithUUIDString:@"74278bda-b644-4520-8f0c-720eaf059935"]; _region = [[CLBeaconRegion alloc] initWithProximityUUID:proximityUUID identifier:@"Glimworm iBeacon"]; [_locationManager startMonitoringForRegion:_region];}

- (void) locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region{ [_locationManager requestStateForRegion:region];}

- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region{ switch (state) { case CLRegionStateInside: /* it would be smart to start ranging beacons here */ break; case CLRegionStateOutside: case CLRegionStateUnknown: default: /* beacons will typically be on a low refresh */ /* so they will probably flip flop a bit when you are in range */ /* I would advise to stop ranging on a timer */ NSLog(@"Region unknown"); }}

Friday, 14 February 14

Inside

Inside

InsideInside

InsideInsideInside

Outside

Friday, 14 February 14

Ranging

Friday, 14 February 14

Hyper Local ContentFriday, 14 February 14

Near

Far

low = 5m , default = 50m, high = 100mFriday, 14 February 14

Friday, 14 February 14

Friday, 14 February 14

From Monitoring{

identifier : “......”,regionState : “inside”

}

From Ranging

{beacons : [ {

UUID : “0000-0000-0000-0000”,major : 1,minor : 1,accuracy : 20.4,proximity : ‘near’

},{ ...}]}

Friday, 14 February 14

Topology

Friday, 14 February 14

UUID : “A”major : 1minor : 1

UUID : “A”major : 1minor : 2

UUID : “A”major : 1minor : 3

UUID : “B”major : 1minor : 1UUID : “A”

major : 2minor : 1

UUID : “A”major : 2minor : 2

Friday, 14 February 14

UUID : “A”major : 1minor : 1

UUID : “A”major : 1minor : 2

UUID : “A”major : 1minor : 3

UUID : “B”major : 1minor : 1UUID : “A”

major : 2minor : 1

UUID : “A”major : 2minor : 2

Friday, 14 February 14

On a Glimworm Beacon you can set:

UUID: “0000-0000-000-0000”major : 0 - 63335minor : 0 - 65535power : 5m / 50m / 100mInterval : 100ms, 1.2s , 2.4sPincode : 000000

Friday, 14 February 14

Over the air configuration

Friday, 14 February 14

USP

Friday, 14 February 14

USP

Friday, 14 February 14

Android

Friday, 14 February 14

Radius Networks

Friday, 14 February 14

Friday, 14 February 14

Friday, 14 February 14

Friday, 14 February 14

Friday, 14 February 14

Radius Networks

Friday, 14 February 14

It’s the endof the worldas we know it

Friday, 14 February 14