【问题标题】:Xmpp image transfer from iPhone从 iPhone 传输 Xmpp 图像
【发布时间】:2014-06-29 09:54:08
【问题描述】:

我正在尝试使用 xmpp 框架为 ios 开发一个聊天应用程序。我收到以下错误。实际上我可以发送图像的详细信息。当我将图像从 iPhone 发送到 spark 时,它会显示图像的名称和大小。但是当我接受该图像时,数据不会被传输。

2014-05-12 11:08:15:310 iPhoneXMPP[407:5d2f] RECV: <iq xmlns="jabber:client" id="4F89EF6C-4A7B-469C-AF0A-B3AD751C1C5E" to="rumit@imt-110/5d4aec79" from="paresh@imt-110/Spark 2.6.3" type="error"><query xmlns="http://jabber.org/protocol/bytestreams" sid="" mode="tcp"><streamhost jid="proxy.imt-110" host="192.168.0.145" port="7777"/></query><error code="406" type="MODIFY"><not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></error></iq>
2014-05-12 11:08:15:310 iPhoneXMPP[407:60b] iPhoneXMPPAppDelegate: xmppStream:didReceiveIQ:

2014-05-12 11:08:15.311 iPhoneXMPP[407:60b] Couldn't set up bytestream for file transfer! --- <TURNSocket: 0xb077140>

请参阅下面的我的代码以发送图像。

- (void)sendToOtherDevice:(NSData *)fileData2 receiverJid:(NSString *)receiverJid
{
    XMPPJID *jid = [XMPPJID jidWithString:receiverJid];
    if ([jid.domain isEqualToString:@"Rumit@imt-110"]) {
        [TURNSocket setProxyCandidates:[NSArray arrayWithObjects:jid.domain, nil]];
    } else {
        [TURNSocket setProxyCandidates:[NSArray arrayWithObjects:jid.domain, @"Rumit@imt-110", nil]];
    }

    TURNSocket *socket = [[TURNSocket alloc] initWithStream:[[self appDelegate] xmppStream] toJID:jid sid:[[self appDelegate] sidVal]];
    socket.fileName = @"defaultPerson.png";
    socket.fileData = fileData2;

    [socket startWithDelegate:self delegateQueue:dispatch_get_main_queue()];

    [[[self appDelegate] xmppStream] addDelegate:self delegateQueue:dispatch_get_main_queue()];

}

我必须在 didreceiveIQ 方法中写什么吗?因为当我从 spark 按下接受时它被调用。

提前致谢。

【问题讨论】:

  • 你检查fileData2是否不为零?
  • 不,它不是零..我可以在 spark 中获取图像名称和大小..请参阅我在帖子中附加了图像..
  • TURNSocket** 没有任何 fileNamefileData 属性,它来自哪里?

标签: ios objective-c file-transfer xmppframework


【解决方案1】:
NSData *data = UIImageJPEGRepresentation(chosenImage, 1.0);
NSLog(@"Size of Image(bytes):%lu",(unsigned long)[data length]);
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"];

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

 [[[PDAppDelegate sharedDelegate] xmppStream]sendElement:message];//( [[PDAppDelegate sharedDelegate] xmppStream]) that is object of XMPPStream

【讨论】:

    猜你喜欢
    • 2013-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2012-07-19
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    相关资源
    最近更新 更多