2016-01-11 92 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圖像或視頻或其他東西。這是一個少得多的約束。