Выходной поток eaframework не работает на 11.2.1

- (void)_writeData {
    while (([[_session outputStream] hasSpaceAvailable]) && ([_writeData length] > 0))
    {
        NSInteger bytesWritten = [[_session outputStream] write:[_writeData bytes] maxLength:[_writeData length]];
        if (bytesWritten == -1) {
            NSLog(@"write error");
            break;
        } else if (bytesWritten > 0) {
            [_writeData replaceBytesInRange:NSMakeRange(0, bytesWritten) withBytes:NULL length:0];
            NSLog(@"bytesWritten %ld", (long)bytesWritten);
        }
    }
}

Я кодирую точно так же, как официальная демонстрация Apple, как указано выше, связь с внешним аксессуаром через порт молнии работает нормально, за исключением «iOS 11.2.1».

Я провел отладку и обнаружил, что он действительно выполнял действие по отправке данных с помощью Outputstream, но все равно потерпел неудачу, не обнаружил никаких данных.

Кто-нибудь знает, как узнать, что происходит внутри потока? это баг Apple?


person doubll liu    schedule 03.01.2018    source источник
comment
любое обновление по вышеуказанной проблеме, я сталкиваюсь с той же проблемой при записи данных на внешнее устройство. Я тестировал iOS 10.3.3 и iOS 11.2, и код выше не работает.   -  person sumit kumar    schedule 05.01.2018
comment
@sumitkumar Я проверил 11.2.2, последнюю версию до сих пор, никакого прогресса. А ты?   -  person doubll liu    schedule 12.01.2018
comment
нет, пока нет, но не могли бы вы помочь мне с iOS 10.3.3, потому что моя не работает?   -  person sumit kumar    schedule 12.01.2018
comment
@sumitkumar о вашем 10.3.3 Я не знаю точной причины, потому что у меня нет специального кода для версии системы, хотя одна вещь, которая может быть полезна, заключается в том, что, пожалуйста, уточните у своего инженера по аппаратному обеспечению команду, которую он отправил для настройки связи с системой iOS. , потому что моя сторона сталкивалась с такой проблемой раньше, и наш инженер по оборудованию изменил команду в соответствии с документами Apple MFI и исправил это.   -  person doubll liu    schedule 17.01.2018


Ответы (1)


Наконец решено:

1. Аппаратная сторона отправляет команду StatusExternalAccessoryProtocolSession, как указано в Accessory Interface Specification R27.pdf.

Странно то, что в версии ниже 11.2 сессия может установить успех без этой команды.

person doubll liu    schedule 18.01.2018