Вы правы, что поведение API изменилось между iOS 10 и iOS 11 в отношении изменений состояния Bluetooth.К сожалению, вы ничего не можете сделать, чтобы изменить это.
Однако лучший способ обойти это - добавить собственную логику в обратный вызов centralManagerDidUpdateState: .Там вы можете проверить, является ли новое состояние CBManagerStatePoweredOff , и вы используете iOS 11 или выше.Если это так, просто сделайте все, что вам нужно, обновите пользовательский интерфейс или аналогичный.
- (void)centralManagerDidUpdateState:(CBCentralManager *)central;
{
if (central.state == CBManagerStatePoweredOff && @available(iOS 11, *))
{
// Do the same stuff that you would do in didDisconnectPeripheral: on iOS 10.
}
}