Я пытаюсь передать файл через XMPP на iOS, используя XMPPFramework и OpenFire. Основа моего кода взята из следующего туториала. У меня есть успешное подключение TurnSocket (XEP-0065: SOCKS5 Bytestreams), но я не могу понять, как использовать его для отправки данных. У меня есть 2 соображения, на каждом из которых я застрял: 1. Вызов [socket writeData] и 2. Использование «XEP-0096: передача файлов SI».
Возможное решение 1. Вызов [socket writeData] В моем делегате приложения у меня есть метод didSucceed. Я могу вызвать [socket writeData] вот так...
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket {
NSLog(@"TURN Connection succeeded!");
[socket writeData:myData withTimeout:60.0f tag:0];
[turnSockets removeObject:sender];
}
Обновлено 14 июня: это правильно? Если да, то как другой пользователь считывает данные? Я пытался реализовать
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
, но он никогда не вызывается. Как я могу гарантировать, что он будет вызван?
Возможное решение 2 — XEP-0096: Передача файлов SI Нужно ли использовать XEP-0096: передача файлов SI? Если да, то как мне использовать мое успешное соединение в XEP-0096 XML, которое мне нужно сформировать? Документы XEP-0096подразумевают наличие атрибута «хэш», но я не знаю, откуда он взялся.
напр.
This is a test. If this were a real file...