Отправка изображения с помощью платформы xmpp на iphone - PullRequest
3 голосов
/ 24 декабря 2010

Я использую XMPP-фреймворк на iPhone для своего приложения для чата. Я хочу отправить изображение из моего приложения с использованием платформы XMPP. Кто-нибудь может подсказать мне, как это сделать?

Любая помощь будет оценена.

Ответы [ 3 ]

6 голосов
/ 04 октября 2012

Добавьте дополнительный тег, такой как

<attachment>base64 of your image </attachment>

Таким образом, ваше изображение отправляется на стороне отправителя путем преобразования его в строку base64 и преобразования строки base64 обратно в изображение на стороне получателя.

Просто преобразуйте Uiimage в кодированный с помощью base64 код, а затем отправьте его через xmpp как сообщение с любым дополнительным тегом, например вложением. Затем на стороне получателя получите сообщение с содержимым base64 и преобразуйте обратно кодированную base64 строку в UIImage
Код для кодирования и декодирования находится по этой ссылке:

http://iphonesdksnippets.com/post/2010/03/14/Convert-image-tofrom-text-%28Base64%29.aspx

... Просто передайте это .. Если у вас есть какие-либо сомнения или вы хотите краткое объяснение, просто прокомментируйте здесь, я отвечу на это ..

1 голос
/ 23 сентября 2014
    NSData *data = UIImageJPEGRepresentation(chosenImage, 1.0);

    Base64Transcoder *base64 = [[Base64Transcoder alloc] init];
    NSString *imgStr = [base64 base64EncodedStringfromData:data];


    NSXMLElement *ImgAttachement = [NSXMLElement elementWithName:@"attachment"];
    [ImgAttachement setStringValue:imgStr];
     NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
   [body setStringValue:@"image test"];


    NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
    [message addAttributeWithName:@"type" stringValue:@"chat"];
    [message addAttributeWithName:@"to" stringValue:@"13iapp@jabbim.cz"];// [NSString stringWithFormat:@"%@@192.168.1.193",self.jabber_id]];

    [message addChild:message];
    [message addChild:ImgAttachement];

     [[[PDAppDelegate sharedDelegate] xmppStream]sendElement:message];
0 голосов
/ 29 декабря 2010

Либо поместите файл на сервер WebDAV и отправьте URL-адрес через XMPP, используйте XEP-0065 или XEP-0047 . Многие, кто задает этот вопрос, выбирают XEP-47, но это почти всегда неправильный выбор, если только файлы не очень маленькие, так как многие серверы будут наказывать ваше соединение как потенциальный отказ в обслуживании для отправки больших объемов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...