因此,有一种通过CBCentralManager通过centralManagerDidUpdateState()监视状态变化的方法。但是,是否有类似的方法调用来监视CBPeripheral的状态更改?我在CoreBluetooth库中找不到公开的任何内容,每当CBPeripheralState发生变化时,我想调用一个函数。
现在我只有一个开关语句,它检查外围状态,但是它总是只返回连接或断开连接。我怎样才能找到连接/断开的情况?我尝试将开关语句放在代码的各个部分,从bleInit()方法到startScanning(), connectToPeripheral()等等。
switch(peripheral.state){
case .disconnected:
print("disconnected")
case .connecting:
print("connecting")
case .connected:
print("connected")
case .disconnecting:
print("disconnecting")
default: break
}发布于 2017-04-05 20:31:52
连接状态和断开状态是过渡状态。您的连接只会在这些状态中停留很短的时间,这就是为什么您将永远看不到这些状态。
如果您的应用程序充当中心,则通过CBCentralManager的didConnect和didDisconnectPeripheral方法通知外围连接状态。
发布于 2018-11-23 15:45:15
CBPeripheral的state属性与KVO兼容,因此您可以轻松地添加一个对象作为观察者,并监视所有状态转换。
但请注意,由于某些原因,一些状态转换是奇怪的,即当外围设备从断开状态移动到断开时,没有任何中间状态。恐怕这是CoreBluetooth堆栈中的bug。
发布于 2017-04-05 19:24:52
我想peripheralManagerDidUpdateState (https://developer.apple.com/reference/corebluetooth/cbperipheralmanagerdelegate/1393271-peripheralmanagerdidupdatestate)能做你想做的吗?
https://stackoverflow.com/questions/43239687
复制相似问题