iOS CoreBluetooth 突然处于 CBManagerStateResetting 状态
iOS CoreBluetooth suddenly in CBManagerStateResetting state
问题:
最近,我经常在 CBPeripheralManager 中获取 CBManagerStateResetting 状态。获得 CBManagerStateResetting 状态后,CBManagerStatePoweredOn 在 3~5 秒内出现。但是,这不仅影响应用程序,而且对等设备由于 link 丢失错误而处于断开状态。
场景:
此问题特别发生在 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,
};
此问题是由于Apple 首次发布时蓝牙堆栈不稳定所致 iOS 10。在后续更新中,该问题已得到解决。在当前版本中 "CBPeripheralManagerStateResetting" 很少出现。
问题:
最近,我经常在 CBPeripheralManager 中获取 CBManagerStateResetting 状态。获得 CBManagerStateResetting 状态后,CBManagerStatePoweredOn 在 3~5 秒内出现。但是,这不仅影响应用程序,而且对等设备由于 link 丢失错误而处于断开状态。
场景:
此问题特别发生在 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,
};
此问题是由于Apple 首次发布时蓝牙堆栈不稳定所致 iOS 10。在后续更新中,该问题已得到解决。在当前版本中 "CBPeripheralManagerStateResetting" 很少出现。