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.
8. @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:@"74278bdab644-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
9. -(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
18. UUID : “A”
major : 1
minor : 1
UUID : “A”
major : 1
minor : 2
UUID : “A”
major : 2
minor : 1
Friday, 14 February 14
UUID : “A”
major : 1
minor : 3
UUID : “B”
major : 1
UUID : “A”
minor : 1
major : 2
minor : 2
19. UUID : “A”
major : 1
minor : 1
UUID : “A”
major : 1
minor : 2
UUID : “A”
major : 2
minor : 1
Friday, 14 February 14
UUID : “A”
major : 1
minor : 3
UUID : “B”
major : 1
UUID : “A”
minor : 1
major : 2
minor : 2
20. On a Glimworm Beacon you
can set:
UUID: “0000-0000-000-0000”
major : 0 - 63335
minor : 0 - 65535
power : 5m / 50m / 100m
Interval : 100ms, 1.2s , 2.4s
Pincode : 000000
Friday, 14 February 14
21. Over the air configuration
Friday, 14 February 14