iOS CoreBluetooth 突然处于 CBManagerStateResetting 状态

iOS CoreBluetooth suddenly in CBManagerStateResetting state

问题:

最近,我经常在 CBPeripheralManager 中获取 CBManagerStateResetting 状态。获得 CBManagerStateResetting 状态后,CBManagerStatePoweredOn 在 3~5 秒内出现。但是,这不仅影响应用程序,而且对等设备由于 link 丢失错误而处于断开状态。

场景:

此问题特别发生在 BLE 连续数据传输期间,同时并行使用来自 iPhone 的 3G 数据。

当发生 CBManagerStateResetting 时,对等设备断开连接。现在经常发生,现在很烦人。

我的问题,

额外信息: CBPeripheralManagerStates如下:

typedef NS_ENUM(NSInteger, CBPeripheralManagerState) {
CBPeripheralManagerStateUnknown = CBManagerStateUnknown,
**CBPeripheralManagerStateResetting = CBManagerStateResetting,**
CBPeripheralManagerStateUnsupported = CBManagerStateUnsupported,
CBPeripheralManagerStateUnauthorized = CBManagerStateUnauthorized,
CBPeripheralManagerStatePoweredOff = CBManagerStatePoweredOff,
CBPeripheralManagerStatePoweredOn = CBManagerStatePoweredOn,
};

此问题是由于Apple 首次发布时蓝牙堆栈不稳定所致 iOS 10。在后续更新中,该问题已得到解决。在当前版本中 "CBPeripheralManagerStateResetting" 很少出现。