CBPeripheralManager如何知道核心蓝牙中的中央设备是连接还是断开连接?

M. *_* Wu 7 macos cocoa ios core-bluetooth bluetooth-lowenergy

在中心端,将在连接或断开连接时调用CBPeripheral代理.但CBPeripheralManager如何知道它是由中央设备连接或断开连接的?此外,外围设备是否可以拒绝来自中央设备的连接请求?

Pau*_*w11 6

当中央连接到您的应用提供的外围服务时,您不会收到特定通知.您可以CBPeripheralManagerDelegate通过调用以下方法推断连接-

  • didSubscribeToCharacteristic
  • didReceiveReadRequest
  • didReceiveWriteRequest

如果您通过didSubscribeToCharacteristic此时收到订阅,则可以在收到相应的电话时推断断开连接didUnsubscribeFromCharacteristic.如果中心没有使用订阅,那么您没有迹象表明它们已经断开连接 - 您根本不会再获得读/写请求.

您无法拒绝来自中央的连接.您可以对一个或多个特征设置加密要求.然后,当中央首次尝试读取/写入/通知该特征时,这将启动基于引脚的配对过程.

您还可以实现某种形式的身份验证过程,其中一个中心需要在响应该中心的其他读/写请求之前响应质询/为特征等写入密码.