2014-11-20 3 views
3

Я сделал индивидуальное чат-приложение с использованием протокола xmpp. Теперь я хочу отправить изображение и видео в мое приложение. У меня есть много информации о передаче файлов, но я не нашел решения. Я использую ниже код для подключения Socket.Как передать изображение Одно устройство на другое устройство с использованием инфраструктуры xmpp на iphone?

Пожалуйста, помогите мне, как я могу это сделать.

Мой код:

[TURNSocket setProxyCandidates:@[@"MyserverHost-desktop"]]; 

XMPPJID *jid = [XMPPJID jidWithString:@"[email protected]"]; 

TURNSocket *turnSocket = [[TURNSocket alloc] initWithStream:[[self appDelegate]xmppStream] toJID:jid]; 

[app.turnSocketArray addObject:turnSocket]; 

[turnSocket startWithDelegate:self delegateQueue:dispatch_get_main_queue()]; 
[turnSocket release]; 

- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket 
{ 

} 
- (void)turnSocketDidFail:(TURNSocket *)sender 
{ 

} 

Каждый раз, когда соединения не в состоянии вызова метода ..

Спасибо.

ответ

0

Даже я не отправляю изображение непосредственно на xmpp, потому что это занимает много времени.

В моем проекте я сообщение может быть строкой, и это может быть изображение, и я нашел там только один способ, чтобы отправить сообщение ИЭ.

[xmppRoom sendMessageWithBody:@"Your msg"]; 

Таким образом, для отправки изображения Сначала я преобразуя его в base64 то загружая его на мой сервер и получая URL-адрес для этого изображения с сервера. Как только мы получим URL-адрес, просто передайте этот URL-адрес в методе выше.

Проблема здесь я столкнулся в том, как отделить обычные сообщения и URL (изображения)

Таким образом, для отправки обычного текста я сразу отправляю его выше функции, но для отправки URL Посылает NSDictionary т.е. мне превращающий NSDictionary в строку и отправить его в приведенном выше функциях

NSDictionary *dict = @{@"type":@"image", 
           @"url":@"Url of your image"}; 

      NSString *newMessage = [NSString stringWithFormat:@"%@",dict]; 

      [appDelegate.xmppRoom sendMessageWithBody:newMessage]; 

для сегрегации нормального сообщения и изображения в -

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message 
{ 

    messages *msg = [messages new]; 

    NSDictionary *dictOfMedia = [NSPropertyListSerialization 
           propertyListWithData:[[[message elementForName:@"body"] stringValue] dataUsingEncoding:NSUTF8StringEncoding] 
           options:kNilOptions 
           format:NULL 
           error:NULL]; 

    if ([dictOfMedia objectForKey:@"type"]) 
    { 
     msg.mediaType = [dictOfMedia objectForKey:@"type"]; 
     msg.url = [dictOfMedia objectForKey:@"url"]; 
    } 
    else 
    { 
     msg.msg = [[message elementForName:@"body"] stringValue]; 
    } 


} 

меня ssages - это мой класс модели, который вы можете использовать просто для использования nsstring.

После этого просто используйте любой проект с открытым исходным кодом для загрузки изображения или выполнения ленивой загрузки самостоятельно.

Надеюсь, что это вам поможет :)

0

Я использую другой метод для переноса медиафайла.

1) Отправитель загружают файл мультимедиа на сервер и получают URL-адрес.

2) Отправитель отправить JSON как это: { "типа": "Изображение", "URL": "это URL для изображения"}

3) Ресивер получить JSON и скачать файл с сервера.

4) Получатель показывает изображение.

+0

Спасибо за ваш ответ ... Можете ли вы отправить свой код. –

+0

@ravisendhav, вы получили код для запроса URL? – Bucket