简单的获取周边的蓝牙设备需要以下几步
1、导入对应的框架
#import
2、创建对象,遵循代理事件
创建CBCentralManager对象,并遵循CBCentralManagerDelegate代理协议
@interface BlueToothViewController ()<CBCentralManagerDelegate>
@property (nonatomic,strong) CBCentralManager *manager;
@end
self.manager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_main_queue()];
3、处理蓝牙状态
在CBCentralManagerDelegate代理方法中:
- (void)centralManagerDidUpdateState:(CBCentralManager *)central;
可以获取当前设备的蓝牙状态,**此代理方法必须实现**。同时可以在代理方法内利用UUIDService对周边设备进行过滤。
- (void)centralManagerDidUpdateState:(CBCentralManager *)central{
switch(central.state){
case CBManagerStateUnknown:
NSLog(@">>>CBManagerStateUnknown");
break;
case CBManagerStateResetting:
NSLog(@">>>CBManagerStateResetting");
break;
case CBManagerStateUnsupported:
NSLog(@">>>CBManagerStateUnsupported");
break;
case CBManagerStateUnauthorized:
NSLog(@">>>CBManagerStateUnauthorized");
break;
case CBManagerStatePoweredOff:
NSLog(@">>>CBManagerStatePoweredOff");
break;
case CBManagerStatePoweredOn:
NSLog(@">>>CBManagerStatePoweredOn");
[central scanForPeripheralsWithServices:@[[CBUUID UUIDWithString:@"FEE0"]] options:nil];
break;
default:
break;
}
}
4、获取周边蓝牙设备
在设备搜索到周边设备之后,会调用代理方法:
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI;
在这个方法内的可以获取多个参数
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI{
}
当搜索到需要的设备时需要主动去停止搜索,如果不主动去调用停止搜索设备的方法:
- (void)stopScan;
则会不停的搜索周边的设备。
测试中搜索到的小米手环处理之后的一些信息截图:
测试中搜索到的本机的设备信息截图:
测试中搜索到的未知其它设备
原本获取到的数据如果没有设备名称,将会是NULL,显示未知设备是经过处理的。