ios – XMPPFramework – 如何创建消息对话线程

ios – XMPPFramework – 如何创建消息对话线程,第1张

概述我正在使用XMPPFramework( https://github.com/robbiehanson/XMPPFramework)在iOS聊天客户端上工作,任何人都可以帮我聊聊和留言. 我使用Spark( http://www.igniterealtime.org/projects/spark/index.jsp)来测试我的iOS聊天客户端. 我发现Spark在Openfire服务器日志中发送的 我正在使用XMPPFramework( https://github.com/robbiehanson/XMPPFramework)在iOS聊天客户端上工作,任何人都可以帮我聊聊和留言.
我使用Spark( http://www.igniterealtime.org/projects/spark/index.jsp)来测试我的iOS聊天客户端.

我发现Spark在Openfire服务器日志中发送的消息XML格式如下:

<message ID="nBT3N-161"          to="[email protected]/7beebb67"          from="[email protected]/Spark 2.6.3"          type="chat">    <body>testing message ...</body>    <thread>FIoMFD</thread>    <x xmlns="jabber:x:event"><offline/><composing/></x></message>

XML格式的消息具有ID:

ID="nBT3N-161"

线程ID:

<thread>FIoMFD</thread>

和其他信息:

<x xmlns="jabber:x:event"><offline/><composing/></x>

但是,当我使用XMPPSteam发送消息时,Openfire日志中的消息XML格式如下:

<message type="chat"          to="[email protected]/Spark 2.6.3"          from="[email protected]/7beebb67">    <body>tttttttttttttttt</body></message>

消息XML格式不包括消息ID,线程ID和xmlns信息.我的代码如下:

- (IBAction)dIDSendingMessage:(ID)sender{    Nsstring *messageStr = self.messageTextFIEld.text;    if([messageStr length] > 0) {        NSXMLElement *body = [NSXMLElement elementWithname:@"body"];        [body setStringValue:messageStr];        NSXMLElement *message = [NSXMLElement elementWithname:@"message"];        [message addAttributeWithname:@"type" stringValue:@"chat"];        [message addAttributeWithname:@"to" stringValue:@"[email protected]/Spark 2.6.3"];        [message addChild:body];        [imManager.xmppStream sendElement:message];        self.messageTextFIEld.text = @"";       [self.tVIEw reloadData];    }}

我是否错过了什么或做错了什么?如何在消息中生成这些信息(例如:message ID,thread,xmlns ..)?

或者我如何创建消息线程或对话线程?

XMPPFramework在asmack(https://github.com/Flowdalic/asmack)中是否有像ChatManager这样的createChat?

谢谢

解决方法 您可以使用[XMPPStream generateUUID]或 – [XMPPStream generateUUID]方法或任何其他您自己的方法为您的消息生成唯一ID.

线程元素不是致命的.你可以使用或不使用它.

具有命名空间jabber:x:event的XML元素在XEP-0022中定义. AFAIK XMPPFramework没有实现它.但是你可以自己实现它.您可以在以下位置找到相关信息:XEP-0022 Message Events.正如您所见,不再推荐使用此扩展程序:

Note: More modern protocol extensions for this functionality have been defined in Chat State Notifications (XEP-0085) 07001 for the composing and offline events and in Message Delivery Receipts (XEP-0184) [2] for the delivered and displayed events; those specifications supersede this one.

所以,你的最终代码可能是这样的:

- (IBAction)dIDSendingMessage:(ID)sender{    Nsstring *messageStr = self.messageTextFIEld.text;    if([messageStr length] > 0) {        NSXMLElement *body = [NSXMLElement elementWithname:@"body"];        [body setStringValue:messageStr];        NSXMLElement *message = [NSXMLElement elementWithname:@"message"];        [message addAttributeWithname:@"type" stringValue:@"chat"];        [message addAttributeWithname:@"to" stringValue:@"[email protected]/Spark 2.6.3"];        [message addChild:body];        NSXMLElement * thread = [NSXMLElement elementWithname:@"thread" stringValue:@"SomeThreadname"];        [message addChild:thread];        [message addAttributeWithname:@"ID" stringValue:[imManager.xmppStream generateUUID]];        [imManager.xmppStream sendElement:message];        self.messageTextFIEld.text = @"";       [self.tVIEw reloadData];    }}
总结

以上是内存溢出为你收集整理的ios – XMPPFramework – 如何创建消息/对话线程全部内容,希望文章能够帮你解决ios – XMPPFramework – 如何创建消息/对话线程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1057392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存