2

当固件调用断开外围设备时,我的委托被调用,(didDisconnectPeripheral),之后,我启动一个计时器并尝试在 5 秒内重新连接(计时器启用了重复)。

MydidFailToConnectPeripheral没有被调用,didConnectToPeripheral 也没有。大约 30 秒后,芯片会自动与应用程序重新连接。

即使我尝试打电话[_manager cancelPeripheralConnection:_peripheral];给董事会也无法完全断开连接。

有没有人有更多关于外围设备所处的“边缘”状态的信息?我找到了这些页面:iOS 6 - Bluetooth LE disconnect and iOS CoreBluetooth reconnecting device with UUID,似乎这个问题与核心蓝牙有关。有谁知道如何解决这个问题?

我收到以下错误:

Error Domain=CBErrorDomain Code=6 "The connection has timed out unexpectedly." UserInfo=0x1e09c050 {NSLocalizedDescription=The connection has timed out unexpectedly.}

我必须断开连接的原因是因为板上的处理器正在被用来做其他事情,因此无线电无法保持活动状态。

以下是苹果开发论坛讨论的链接: https ://devforums.apple.com/message/898902

4

1 回答 1

3

cancelPeripheralConnection方法被处理为 Core Bluetooth 的信号,表明您的应用程序将不再使用该外围设备。iOS 端的家务管理完成后,您会收到didDisconnecPeripheral回调。但是,这并不意味着外围设备已物理断开连接。BLE 连接仍可以处于活动状态,但您的应用程序不知道它。

对您来说,很明显是 iOS 在连接时无法启动新连接的问题。

解决此类问题的最佳方法是在外围设备端启动断开连接。在外设中创建一个特征并将其修改用作外设断开连接的信号。或者以其他方式实现它,但使断开连接由您的协议而不是核心蓝牙实现来处理。

于 2013-09-29T21:24:54.680 回答