未调用 XEP-0022 的 SMACK 消息侦听器
Posted
技术标签:
【中文标题】未调用 XEP-0022 的 SMACK 消息侦听器【英文标题】:SMACK Message Listener for XEP-0022 does not get called 【发布时间】:2011-09-21 08:48:28 【问题描述】:我无法接收 XMPP 消息,我正在使用以下代码:
Message mess = new Message()
@Override
public String toXML()
return "<message to='user@50.17.86.32' id='message22'><body>Great Mesg</body><x xmlns='jabber:x:event'><offline/><delivered/><composing/></x></message>";
;
PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
connection.sendPacket(mess);
connection.addPacketListener(new PacketListener()
public void processPacket(Packet packet)
Message message = (Message) packet;
Log.d("Recv", "Message: " + message.toXML());
, filter);
基本上,我正在使用 SMACK 的补丁版本 for android....并尝试使用 xep 0022 获取消息状态。
【问题讨论】:
到底出了什么问题?对问题进行更详细的描述。此外,您只接受了 17% 的问题的答案。如果您没有得到任何好的答案,那没关系,但您可能想回顾一下您过去提出的问题,如果有好的答案,请单击最佳答案旁边的复选标记/打勾。这会鼓励人们回答您未来的问题。 问题没有以正确的方式回答..所以这是一个问题......在这个问题中,我没有在控制台上收到消息,在调试模式下我可以看到消息正在发送,但 smack 不是列出消息。请指导我... 【参考方案1】:我认为您的过滤器是您的问题的原因。如果您的传入消息没有定义 type='chat' 属性,那么它们将是 Message.Type.normal 类型。我当然只是猜测,因为您没有发布传入的消息,但您发送的消息不包含类型。
您可能只想创建一个 ChatManagerListener 并将其注册到 ChatManager。这将处理这种情况。
注意:您知道 XEP-0022 已经过时了吧?
【讨论】:
是的……你说得对……谢谢罗宾。但我不知道 0022 已经过时了,所以哪一个是与该功能相似的最新 XEP。 XEP-0085 和 XEP-0184以上是关于未调用 XEP-0022 的 SMACK 消息侦听器的主要内容,如果未能解决你的问题,请参考以下文章