今天项目中的蓝牙功能已经开发完毕,总结一下。
CoreBluetooth.framework:功能强大的蓝牙框架,只要该设备支持蓝牙4.0,就可以进行蓝牙传输,只要该设备支持蓝牙4.0。
CoreBluetooth中分为两大设备:中央设备和外围设备。
1.如果一个设备设置为外围设备,那他负责发布并广播服务,通知周围的中央设备它的可用服务和特征,相当于通信中的服务端
2.如果设备设置为中央设备,那他负责和外围设备建立连接,连接成功可以使用外围设备的服务和特征,相当于通信中的客户端。
即:
外围设备 —–类似于——-》服务器端
中央设备 —–类似于——-》客户端
这两大设备进行交互靠的是服务和特征。服务和特征都有唯一标识CBUUID来确定。
1.服务CBService:
中央设备只有通过服务才能与外围设备进行数据传输,类似于客户端通过网址URL才能与服务器连接一样
2.特征CBCharacteristic:
每个服务可以有多个特征,中央设备必须订阅外围设备服务的特征值,才能获取外围设备的数据,类似于GET请求可以请求获取服务器数据,POST请求可以向服务器传输数据一样。
一般我们需要的是中央设备,外围设备可以是手环,耳机……
设备作为中央设备 实现过程如下:
1.创建中央设备管理器对象,遵循代理CBCentralManagerDelegate
self.manager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_main_queue()];
self.BleViewPerArr = [[NSMutableArray alloc]initWithCapacity:1];
2.代理方法 判断设备的蓝牙是否开启
- (void)centralManagerDidUpdateState:(CBCentralManager *)central{
switch (central.state) {
case CBCentralManagerStatePoweredOff:
NSLog(@"您的手机蓝牙未开启");
break;
case CBCentralManagerStateResetting:
NSLog(@"检测到您的手机蓝牙重置");
break;
case CBCentralManagerStateUnsupported:
NSLog(@"检测到您的手机不支持蓝牙4.0");
break;
case CBCentralManagerStateUnauthorized:
NSLog(@"检测到您的手机蓝牙没有授权");
break;
case CBCentralManagerStateUnknown: