【发布时间】: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** 没有任何 fileName 或 fileData 属性,它来自哪里?
标签: ios objective-c file-transfer xmppframework