Hardware Reference
In-Depth Information
[ self . locationManager stopRangingBeaconsInRegion: self . beaconRegion ];
NSLog ( @ "exited region" );
}
// determine closest beacon
- ( void ) locationManager: ( CLLocationManager *) manager
didRangeBeacons: ( NSArray *) beacons
inRegion: ( CLBeaconRegion *) region
{
__block CLBeacon * closestBeacon ;
if ( beacons . count < 1 ) {
closestBeacon = nil ;
}
else
{
NSLog ( @ "locationManager didRangeBeacons: %@" , beacons );
[ beacons enumerateObjectsUsingBlock: ^( CLBeacon * beacon , NSUInteger idx ,
BOOL * stop )
{
if (( closestBeacon == nil ) || ( beacon . rssi > closestBeacon . rssi ))
{
closestBeacon = beacon ;
}
NSLog ( @ "closest beacon: %@" , closestBeacon );
}];
}
if (![ self beacon: self . closestBeacon isSameAsBeacon: closestBeacon ]) {
self . closestBeacon = closestBeacon ;
[[ NSNotificationCenter defaultCenter ]
postNotificationName: BobsBeaconTracker_ClosestBeaconChanged
object: self ];
}
}
// compare beacons
- ( BOOL ) beacon: ( CLBeacon *) beacon isSameAsBeacon: ( CLBeacon *) otherBeacon
{
return ([ beacon . proximityUUID isEqual: otherBeacon . proximityUUID ] &&
( beacon . major == otherBeacon . major ) &&
( beacon . minor == otherBeacon . minor ));
}
If this code were embedded in a museum application, the app could now determine the
closest beacons and then take the appropriate action (e.g., provide multimedia content
that futher explains the exhibit).
Search WWH ::




Custom Search