当中央管理器状态为 CBManagerStatePoweredOff 时,CBCentralManger Delegate 方法在 iOS 11 和以下 iOS 11 中表现不同
CBCentralManger Delegate method behaves differently in iOS 11 and below iOS 11 when central manager state is CBManagerStatePoweredOff
CBCentralManger Delegate 方法在 iOS 11 及以下 iOS 11
中表现不同
低于iOS11:更新CBCentralMangaer状态后CBManagerStatePoweredOff状态CentralManager委托-( void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error 正在调用,连接的外设将断开连接。
iOS 11 将 CBCentralMangaer 状态更新为 CBManagerStatePoweredOff 状态中央管理器断开委托后 didDisconnectPeripheral 没有来电。
我希望在 iOS 11 中调用断开委托,那么如何在 iOS 11 中解决此问题。
关于蓝牙状态变化,API 行为在 iOS 10 和 iOS 11 之间发生了变化,这是正确的。很遗憾,您无能为力。
但是,解决此问题的最佳方法是在 centralManagerDidUpdateState: 回调中添加您自己的逻辑。在那里你可以检查新状态是否是 CBManagerStatePoweredOff 并且你是 运行 iOS 11 或以上。如果是这种情况,那么就做任何你需要做的事情,更新 UI 或类似的。
- (void)centralManagerDidUpdateState:(CBCentralManager *)central;
{
if (central.state == CBManagerStatePoweredOff && @available(iOS 11, *))
{
// Do the same stuff that you would do in didDisconnectPeripheral: on iOS 10.
}
}
CBCentralManger Delegate 方法在 iOS 11 及以下 iOS 11
中表现不同低于iOS11:更新CBCentralMangaer状态后CBManagerStatePoweredOff状态CentralManager委托-( void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error 正在调用,连接的外设将断开连接。
iOS 11 将 CBCentralMangaer 状态更新为 CBManagerStatePoweredOff 状态中央管理器断开委托后 didDisconnectPeripheral 没有来电。
我希望在 iOS 11 中调用断开委托,那么如何在 iOS 11 中解决此问题。
关于蓝牙状态变化,API 行为在 iOS 10 和 iOS 11 之间发生了变化,这是正确的。很遗憾,您无能为力。
但是,解决此问题的最佳方法是在 centralManagerDidUpdateState: 回调中添加您自己的逻辑。在那里你可以检查新状态是否是 CBManagerStatePoweredOff 并且你是 运行 iOS 11 或以上。如果是这种情况,那么就做任何你需要做的事情,更新 UI 或类似的。
- (void)centralManagerDidUpdateState:(CBCentralManager *)central;
{
if (central.state == CBManagerStatePoweredOff && @available(iOS 11, *))
{
// Do the same stuff that you would do in didDisconnectPeripheral: on iOS 10.
}
}