如何在 Swift 语言中使用 XMPPStream XMPP 框架发送图像?
Posted
技术标签:
【中文标题】如何在 Swift 语言中使用 XMPPStream XMPP 框架发送图像?【英文标题】:How to sent image using XMPPStream XMPP Framework in Swift Language? 【发布时间】:2016-09-03 10:11:09 【问题描述】:我用过
pod 'XMPPFramework'
在我的演示项目中。我建立了联系,并适当地放置了委托方法。
我进行了简单的聊天,我正在使用
发送消息 let msg = XMPPMessage(type: "chat", to: senderJID)
msg.addBody(message)
self.appDelegate.xmppStream.sendElement(msg)
在接收端,我正在做
func xmppStream(sender: XMPPStream!, didReceiveMessage message: XMPPMessage!)
messageStr = messageStr + message.body()
print("Did receive message \(messageStr)")
现在我想发送图片。我在objective-c中浏览并找到了一些使用附件的代码,如下所示。
NSData *dataF = UIImagePNGRepresentation(SendImage);
NSString *imgStr=[dataF base64Encoding];
NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
[body setStringValue:messageStr];
NSXMLElement *imgAttachement = [NSXMLElement elementWithName:@"attachment"];
[imgAttachement setStringValue:imgStr];
NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
[message addAttributeWithName:@"type" stringValue:@"chat"];
[message addAttributeWithName:@"to" stringValue:chatWithUser];
[message addChild:body];
[message addChild:imgAttachement];
[self.xmppStream sendElement:message];
我的 Swift 代码,我从上面的 Objective-C 代码转换而来。
var dataF = UIImagePNGRepresentation(image)
var imgStr = dataF.base64Encoding()
let root = NSXMLElement(name: "find_sites")
var body = NSXMLElement.elementWithName("body")
body.stringValue = messageStr
var imgAttachement = NSXMLElement.elementWithName("attachment")
imgAttachement.stringValue = imgStr
var message = NSXMLElement.elementWithName("message")
message.addAttributeWithName("type", stringValue: "chat")
message.addAttributeWithName("to", stringValue: senderJID)
message.addChild(body)
message.addChild(imgAttachement)
self.xmppStream.sendElement(message)
如果我将此代码转换为 Swift,我在 NSXMLElement 上遇到错误,我应该怎么做,如何实现它。
我还阅读了XMPPStream class
,我没有发现任何有用的东西。
谢谢。
【问题讨论】:
你遇到了什么错误? 使用未解析的标识符“NSXMLElement”。我还将代码更改为 Swift,让我也添加有问题的 swift 代码。 尝试使用XMPPMessage
类
XMPPMessage 位于 XMPPFramework 的核心
我在简单的文本中使用 XMPPMessage,而对于图像,我在库中找不到任何方法。
【参考方案1】:
您可以使用 DDXMLElement 代替 NSXMLElement。
let body = DDXMLElement.element(withName: "body") as! DDXMLElement
let imageAttachement = DDXMLElement.element(withName: "attachment", stringValue: imageStr!) as! DDXMLElement
let message = DDXMLElement.element(withName: "message") as! DDXMLElement
message.addAttribute(withName: "type", stringValue: "chat")
message.addAttribute(withName: "to", stringValue: receiver)
message.addChild(body)
message.addChild(imageAttachement)
【讨论】:
我已使用此代码发送图像,但如何读取 xmpp 数据?以上是关于如何在 Swift 语言中使用 XMPPStream XMPP 框架发送图像?的主要内容,如果未能解决你的问题,请参考以下文章
打开pdf,ppt ..等文件时,如何使用swift语言在Xcode中添加关闭或后退按钮?