/*
建⽴立中⼼心设备
扫描外设(Discover Peripheral)
连接外设(Connect Peripheral)
扫描外设中的服务和特征(Discover Services And Characteristics)
利⽤用特征与外设做数据交互(Explore And Interact)
断开连接(Disconnect)
*/
#import "ViewController.h"
#import <CoreBluetooth/CoreBluetooth.h>
@interface ViewController ()<CBCentralManagerDelegate,CBPeripheralDelegate>
//所有扫描外设的列表
@property(nonatomic,strong)NSMutableArray*peripherals;
//创建蓝牙管理工具 中心设备
@property(nonatomic,strong)CBCentralManager*manager;
//服务信息(心率跳动次数)
@property(nonatomic,strong)CBCharacteristic*characteristicHeart;
@end
@implementation ViewController
-(CBCentralManager*)manager
{
if (!_manager) {
_manager=[[CBCentralManager alloc]init];
}
return _manager;
}
-(NSMutableArray*)peripherals
{
if (!_peripherals) {
_peripherals=[[NSMutableArray alloc]init];
}
return _peripherals;
}
- (void)viewDidLoad {
[super viewDidLoad];
//2.扫描外设
// 可以扫描指定的服务或者特性 [数组里传UUID唯一标识
[self.manager scanForPeripheralsWithServices:@[@"778899"] options:nil];
// 可以扫描所有的设备
[self.manager scanForPeripheralsWithServices:nil options:nil];
//设置代理,获取扫描产生的设备
self.manager.delegate=self;
//3.连接外设 可以设置btn点击连接外设
for (CBPeripheral *per in self.peripherals) {
[self.manager connectPeripheral:per options:nil];
//设置外设代理,用于信息交互
per.delegate=self;
}
}
#pragma mark CBCentralManagerDelegate
//扫描外部设备就会调用
-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI
{
//peripheral 外设 如果存在就不添加
if(![self.peripherals containsObject:peripheral])
{
[self.peripherals addObject:peripheral];
}
}
//4 一旦连接到外设 扫描服务信息
-(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{
//扫描服务
[peripheral discoverServices:@[@"123456"]];
}
//中心设备状态更新调用
-(void)centralManagerDidUpdateState:(CBCentralManager *)central
{
NSLog(@"扑捉当前中心设备的状态!");
}
#pragma mark CBPeripheralDelegate
//外设扫描到服务调用
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{
for (CBService *service in peripheral.services) {
[peripheral discoverCharacteristics:@[@"222222"] forService:service];
}
}
//扫描到服务中的特性的时候调用
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{
for (CBCharacteristic *character in service.characteristics) {
if ([character .UUID.UUIDString isEqualToString:@"222222"]) {
self.characteristicHeart=character;
NSLog(@"记录查到的特性");
}
}
}
-(void)dealloc
{
}
@end