iBeacons是iOS7的新增的功能,可用于室内近场定位。iOS设备可以检测到附近的iBeacons兼容设备(是设备检测iBeacons),在当前版本中甚至可以在应用未打开的情况(就是后台)下获得回调(很nb)。
iBeacons有一个有用的特性是可以距离感应,当你的iOS设备检测到了一个iBeacons设备,那么app即可通过CoreLocation监测设备的距离,通过回调的形式通知距离变化(一般不会大于100m)
前提就是用户必须开启BLE4.0(屌丝跟高富帅开始区分了,我是屌丝iPhone4)其中支持的设备(iPhone 4s, iPod Touch5, iPad3及之后的设备)所有支持低功耗蓝牙技术(BLE4.0)就是的iOS设备都可以变成一个iBeacon设备
首先需要定义一个CLBeaconRegion来实现iBeacon,如下
NSUUID *myProximityUUID = [[NSUUID alloc]
initWithUUIDString:@"566C5595-6EC7-4F08-909F-C954BDCA6CD3"];
NSNumber *branchNumber = @42;
NSNumber *tillNumber = @3;
CLBeaconRegion *region = [[CLBeaconRegion alloc]
initWithProximityUUID:myProximityUUID
major:[branchNumber unsignedShortValue]
minor:[tillNumber unsignedShortValue]
identifier:@"com.mycompany.store"];
然后把这些信息交由CBPeripheralManager进行广播
NSDictionary *peripheralData = [region peripheralDataWithMeasuredPower:nil]; CBPeripheralManager *myPeripheralManager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil]; [myPeripheralManager startAdvertising:peripheralData];
- (void)peripheralManagerDidUpdateState:(CBPeripheralManager *)peripheral
{
NSLog(@"hello");
switch (peripheral.state) {
case CBPeripheralManagerStatePoweredOn:
//[self setupService];
break;
default:
NSLog(@"Peripheral Manager did change state");
break;
}
}
于是一个iOS设备就变成了一个iBeacon了
内容来自某人的栖息地