iOS CoreBluetooth突然处于CBManagerStateResetting状态

时间:2017-11-15 12:32:48

标签: ios iphone bluetooth bluetooth-lowenergy core-bluetooth

问题:

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

情境:

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

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

我的问题,

  • 为什么在应用程序已连接到BLE设备时会出现CBManagerStateResetting状态?
  • 可以从iOS应用程序端和对等设备端采取哪些步骤来防止此重置问题?

额外信息: CBPeripheralManagerStates如下:

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

1 个答案:

答案 0 :(得分:0)

此问题是由于Apple首次发布iOS 10时蓝牙堆栈不稳定造成的。在后续更新中,此问题已解决。在当前版本中,很少出现“ CBPeripheralManagerStateResetting”。