什么是蓝牙BLE?
BLE是蓝牙4.0(Bluetooth low energy)的简称,特点就是低耗电。
蓝牙设备间是怎么连接交互的?
只要是集成了蓝牙BLE模块的设备,都可以通过蓝牙协议栈(GATT、ATT、L2CAP)进行交互。iphone和mac都集成了BLE,我们可以通过<CoreBlueTooth>框架与底层的蓝牙协议栈进行交互。举例:当iPhone作为中心设备时,通过CBCentralManager来管理 Remote Peripheral(CBPeripheral、CBCharacteristic、CBService).当iPhone作为外设时,通过CBPeripheralManager、可变的CBMutableService、CBMutableCharacteristic提供服务。
中心设备和外设的区别与规范
是发起蓝牙连接的设备,并对外设Peripheral进行管理。中心设备的规范需要提供三个功能:1.搜索连接外设;2.与外设提供的数据交互;3.订阅一个当数据发生变化就会发出通知的特征Characteristic。
通过Radio(无线电广播设备)广播数据包,提供数据的一方。外设的规范也需要提供三个功能:1.发布、广播服务Service;2.响应对特征的读写请求;3.响应对特征的订阅请求。
APP的状态对蓝牙连接的影响
当iPhone在后台或处于暂停状态,APP不能进行BLE通信。即便iPhone设置了支持蓝牙在后台运行的选项,数据处理的方式也会有所不同。蓝牙在后台运行时也可能因为内存过低被系统杀死,CoreBlueTooth支持中心设备、外设的状态信息的保存和恢复,可以通过这个来实现长期交互。
下面将简单叙述iPhone作为中心设备时的代码实现
关键类 CBCentralManagerDelegate CBPeripheralDelegateCharacteristic 补充:
特征值能否被订阅、写入数据,是根据特征值的 properties属性来决定的。
特征动态的订阅、取消订阅:setNotifyValue:forCharacteristic:
静态读取特征值:readValueForDescriptor:
给特征写入数据:writeValue:forCharacteristic:type:
网友评论