Метод делегата CBCentralManger ведет себя по-разному в iOS 11 и ниже iOS 11, когда состояние центрального менеджера - CBManagerStatePoweredOff - PullRequest
0 голосов
/ 16 октября 2018

Метод делегата CBCentralManger ведет себя по-разному в iOS 11 и ниже iOS 11

Ниже iOS 11: После обновления состояния CBCentralMangaer до CBManagerStatePoweredOff состояние CentralManager делегат - (void) centralManager: (CBCentralManager *) central didDisconnectPeripheral: (CBPeripheral *) периферийная ошибка: (NSError *) ошибка вызывает и подключенное периферийное устройство будет отключено.

iOS 11 После обновления состояния CBCentralMangaer до CBManagerStatePoweredOff Делегат разъединения центрального менеджера состояния didDisconnectPeripheral не вызывает.

Я хочу, чтобы делегат разъединения должен вызываться в iOS 11, поэтому как я могурешить эту проблему в iOS 11.

1 Ответ

0 голосов
/ 16 октября 2018

Вы правы, что поведение 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.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...