标签:date error idc 数据转换 代理 证明 包含 stat 返回
一、外设管理者 - 发布广告
如果两部手机在BLE的基础上进行连接,需要让其中一部手机作为外设,外设需要进行广播自己需要发布的数据,以供中心设备的接收和处理。
实现外设广播数据并且处理发送过程当中的流量限制如下:
1.初始化外设管理者
2.设置外设管理者的代理
3.自动调用外设管理者状态的代理方法 - 判断外设管理者的设备是否开启
4.当有中心设备订阅了外设当中的特征时,调用以下方法:
- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didSubscribeToCharacteristic:(CBCharacteristic *)characteristic;
在此方法中,获取到需要发送的数据并且进行发送。
5.当中心设备取消订阅外设当中的特征时,调用一下方法:
- (void)peripheralManager:(CBPeripheralManager *)peripheral central:(CBCentral *)central didUnsubscribeFromCharacteristic:(CBCharacteristic *)characteristic;
6.发送数据
6.9.1.设置结尾标注状态为YES,发送结尾标注,如果结尾标注有值(代表数据发送完成),为了再次发送数据,重置结尾标注状态为NO
7.当订阅内容进行更新时,调用下面方法:
- (void)peripheralManagerIsReadyToUpdateSubscribers:(CBPeripheralManager *)peripheral;
如果数据更新,再次发送数据。
8.当textView当中数据进行改变时,应该停止广播
9.当textView开始编辑时,在导航栏右侧添加完成按钮,点击这个按钮销毁键盘。
10.处理开始/结束广播开关
二、中心管理者 - 接收数据
1.初始化中心管理者并且设置代理和队列
2.初始化接收数据数组
3.中心管理者的代理方法
4.如果链接外设失败,调用以下代理方法
- (void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;
1.输出链接失败的设备和错误描述
2.清除链接数据
5.如果连接到外设,调用下面代理方法:
- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral;
4.外设的代理方法
1.如果找到XX服务,会调用发现服务的代理方法,如下:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(nullable NSError *)error;
2.如果XX特征被找到,调用下面代理方法:
- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(nullable NSError *)error;
3.外设的特征进行更新时,调用下面方法:
- (void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error;
1.如果出错,输出错误描述,并且返回。
2.如果没出错,将接受的特征数据转换为字符串,解码UIF-8。
3.判断是否接受到了完整数据(判断数据是否包含结尾标识(EOM))
1.将该特征的数据拼接到数据属性当中进行保存(拼接)
2.输出获得的拼接数据
4.当订阅状态发生改变时(订阅/取消订阅发生时)调用下面方法:
- (void)peripheral:(CBPeripheral *)peripheral didUpdateNotificationStateForCharacteristic:(CBCharacteristic *)characteristic error:(nullable NSError *)error;
- (void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(nullable NSError *)error;
1.设置本地发现的外设为nil。
2.重新开始扫描外设。
标签:date error idc 数据转换 代理 证明 包含 stat 返回
原文地址:http://www.cnblogs.com/northWolves/p/6030454.html