Многопользовательская сессия отключается при отправке больших файлов/изображений

Я использую функцию многопользовательского подключения в своем приложении. У меня странная проблема, т.е. я могу отправлять и получать сообщения (общаться). Но в случае обмена файлами я использую

sendResourceAtURL:resourceURL withName:fileName toPeer:peer1

Но при отправке больших файлов, т. е. (более 1 МБ), приложение аварийно завершает работу, т. е. когда я делюсь файлом, взятым из приложения для фотографий, с помощью контроллера выбора изображений. Любые возможные решения для него? это проблема с памятью (сбои из-за большого использования памяти?) Я использую ios 8.1.3 (устройство) и симулятор ios 8. Я также проверил два устройства в ч / б, но все тот же сбой. Пожалуйста, помогите !!!!


comment
Какое приложение вылетает? Тот, кто отправляет или тот, кто получает? Пожалуйста, напишите код. Невозможно помочь, не видя, что ты делаешь.   -  person ChrisH    schedule 11.02.2015
comment
Привет, у меня точно такие же проблемы, ты нашел способ улучшить/исправить это? спасибо   -  person FlavienSi    schedule 27.10.2015


Ответы (1)


Отправка данных или файлов с многоточечным подключением работает только для небольших объемов данных — несколько килобайт — это нормально, но отправка более мегабайта приведет к сбою. Если вам нужно отправить больше, вам нужно использовать потоки. Чтобы установить выходной поток, запустите его, когда сеанс будет установлен.

-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state
{
    switch(state)
    {
        // ...
        case MCSessionStateConnected:
            self.outputStream = [session startStreamWithName:@"Stream" toPeer:weakSelf.remotePeerID error:&error];
            break;
        // ...
    }
}

И для вашего входного потока реализуйте

-(void)session:(MCSession *)session didReceiveStream:(NSInputStream  *)stream withName:(NSString *)streamName fromPeer:(MCPeerID *)peerID
{
    self.inputStream = stream;
}

Когда у вас есть оба потока, вы можете открыть их и начать читать и писать.

person DavidA    schedule 12.01.2016