外设peripheral模式的流程
2018-02-09 本文已影响12人
Dayu大鱼
外设peripheral模式的流程
1> 框架 CoreBluetooth
2> 初始化外设管理者 peripheralManager
3>添加服务进外设中 ==> peripheral.addService()
4>添加服务成功后 调用 ==> didAddService: 外设管理方法 ,在该方法中==> 开始广播peripheral.startAdvertising()
4.1>设置完广播 触发了一个外设管理的方法 ==> peripheralManagerDidStartAdvertising: ==> 该方法中可以追踪广告的发送成败
Tip: 接下来就是与中心模式的交互问题
5> 对central的操作进行响应 ==> 什么操作?
5.1 读characteristics请求
5.2 写 characteristics请求
5.3 订阅和取消订阅 characteristics 特征
5.3.1 因为该外设管理者添加了 读取写入等的服务, 所以能够处理中心设备过来的相应请求
中心设备订阅外设管理者中的特征时候调用的方法
func peripheralManager(peripheral: CBPeripheralManager, central: CBCentral, didSubscribeToCharacteristic
中心设备取消订阅某特征调用的方法
func peripheralManager(peripheral: CBPeripheralManager, central: CBCentral, didUnsubscribeFromCharacteristic characteristic: CBCharacteristic)
外设管理者更新特征值
// 发送一个更新的特征值给订阅了特征的中心设备
let characteristic = timer.userInfo as! CBMutableCharacteristic
pMgr.updateValue(nowData!,
forCharacteristic: characteristic,
onSubscribedCentrals: nil)
其实可以理解为 , 外设管理者被订阅, 被取消订阅内部特征值的时候调用这两个方法
总结:
- 导入CoreBluetooth框架
- 初始化外设管理者
- 监听状态 如果poweredOn ==> 添加服务(服务中包括 read write等)
- 添加服务 ==> 触发服务被添加相应方法
- 服务被添加,广播
- 与中心设备进行交互
6.1 外设管理者收到==>读请求
6.2 外设管理者收到==> 写请求
6.3 中心设备订阅外设管理者的特征值
6.4 中心设备取消订阅外设管理者的特征值
2018-2-9
蓝牙续集
外设管理者收到中心设备读请求 :
1> 拿到特征值 request.characteristic.value
2> 将特征值赋值给请求值 request.value
3> 外设响应这个请求
外设管理者收到中心设备写请求:
1> 取出请求
2> 取出请求值 request.value
3> 赋值给特征值 request.characteristic.value
总结:
读: 特征值赋值给请求值 , 写: 请求值赋值给特征值