2014-11-28 2 views
1

Я работаю над инфраструктурой подключения многопользовательской темы. У меня есть отличная идея об этих рамках, используя ссылку ниже:Multipeer Connectivity: совместное использование файлов для всех одноранговых узлов

http://www.appcoda.com/intro-multipeer-connectivity-framework-ios-programming/

Но моя проблема в том, что я могу отправлять сообщения в чат для всех подключенных пэров и принимается ими. Но мне нужна такая же функциональность в совместном использовании файлов. Мне нужно отправлять файлы одновременно всем подключенным одноранговым узлам. Это возможно????

ответ

1

Да, это возможно. Если вы хотите отправлять большие файлы (например, десятки мегабайт или более), я бы рекомендовал использовать метод sendResourceAtURL:withName:toPeer:withCompletionHandler`` instead of sendData: toPeers: withMode: error: `.

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

NSURL* fileUrl = [NSURL fileURLWithPath:...]; //get the path of the file you'd like to send 
    NSString* resourceName = @"<name to display>"; 
    for(MCPeerID *peer in session.connectedPeers) { 
     [session sendResourceAtURL:fileUrl withName:resourceName toPeer:peer withCompletionHandler:^(NSError *error) { 
      //handle transfer completion or error 
     }]; 
    } 
+0

Отличная идея. Я обязательно попробую, и если это сработает, я обязательно приму ответ. – DHEERAJ

+0

поддерживает ли пауза и возобновление загрузки после того, как соединение было потеряно? –

0

Пока вы можете конвертировать файлы в объект NSData, возможно, это возможно.

В теории, если вы измените эту строку:

NSData *dataToSend = [_txtMessage.text dataUsingEncoding:NSUTF8StringEncoding]; 

к:

NSData *dataToSend = [NSData dataWithContentsOfFile:@"Path to the file."]; 

и держать остальном же он должен работать.

Смежные вопросы