2016-01-11 143 views
0

我想传输图像和视频。我能够传输文本,但无法传输文件。iOS和XMPP客户端

这里是传输文件的代码 -

NSString *messageStr = self.textView.text; 

UIImage *imagePic = [UIImage imageNamed:@"apple.png"]; 

if ([messageStr length] > 0 || [imagePic isKindOfClass:[UIImage class]]) { 
    NSXMLElement *body = [NSXMLElement elementWithName: @"body"]; 
    [body setStringValue:messageStr]; 
    NSMutableDictionary *m = [[NSMutableDictionary alloc]init]; 
    NSXMLElement *message = [NSXMLElement elementWithName:@"message"]; 
    [message addAttributeWithName:@"type" stringValue:@"chat"]; 
    [message addAttributeWithName:@"to" stringValue:self.rosterJid]; 
    [message addChild:body]; 

    if ([imagePic isKindOfClass:[UIImage class]]) { 
     [m setObject:imagePic forKey:@"image"]; 
     NSData *dataPic = UIImagePNGRepresentation(imagePic); 
     NSXMLElement *photo = [NSXMLElement elementWithName:@"PHOTO"]; 
     NSXMLElement *binval = [NSXMLElement elementWithName:@"BINVAL"]; 
     [photo addChild:binval]; 
     NSString *base64String = [dataPic base64EncodedStringWithOptions:0]; 
     [binval setStringValue:base64String]; 
     [message addChild:photo]; 
    } 
    [[[self appDelegate] xmppStream] sendElement: message]; 
    self.textView.text = @""; 

} 

如何接收文件? 在此先感谢

+0

您是否在'didRecieveMessage'中收到了消息? –

+0

是的。我正进入(状态。 – user1589516

回答

0

我们试图搞乱那个系统,我认为正在传递的字符串被截断。关于服务器将接受的大小字符串的一些东西。我们最终决定创建一个包含消息类型的自定义元素。然后将媒体上传到s3存储区并返回参考ID。创建参考链接,我们的客户可以根据消息类型处理。所以你在聊天中转移的唯一东西就是一个id来检索s3图像或视频或其他东西。这是一个少得多的约束。