带有 XMPP 客户端的 iOS

Posted

技术标签:

【中文标题】带有 XMPP 客户端的 iOS【英文标题】:iOS with XMPP Client 【发布时间】:2016-01-11 09:23:09 【问题描述】:

我想传输图像和视频。我可以传输文本但无法传输文件。

这是传输文件的代码 -

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 = @"";


如何接收文件? 提前致谢

【问题讨论】:

你收到didRecieveMessage的消息了吗? 【参考方案1】:

我们试图弄乱那个系统,我认为传递的字符串被剪掉了。有关服务器将接受的大小字符串的信息。我们最终决定创建一个具有消息类型的自定义元素。然后将媒体上传到返回参考 ID 的 s3 存储桶。创建了我们的客户可以根据消息类型处理的参考链接。因此,您在聊天中传输的唯一内容是检索 s3 图像或视频或其他任何内容的 id。它的限制要小得多。

【讨论】:

以上是关于带有 XMPP 客户端的 iOS的主要内容,如果未能解决你的问题,请参考以下文章

XMPP:使客户端仅对该客户端的其他实例在线显示

使用 Google AppEngine XMPP 库查询客户端的时区

PHP:保持与 XMPP 聊天客户端的持久连接

使用带有 Socket.io IOS 客户端的客户端证书

iOS XMPP 客户端在一段时间后断开连接

带有iOS客户端的Google App Engine Channel API?