Smack 4.2.0 OutgoingChatMessageListener 没有接到任何电话
Posted
技术标签:
【中文标题】Smack 4.2.0 OutgoingChatMessageListener 没有接到任何电话【英文标题】:Smack 4.2.0 OutgoingChatMessageListener is not getting any call 【发布时间】:2018-02-26 14:07:56 【问题描述】:我使用的是 smack 4.2.0 最新版本,这里 IncomingChatMessageListener
工作正常,但是当我发送消息时 OutgoingChatMessageListener
没有被调用。任何人都可以建议我这是什么问题?
我的代码在下面
ChatManager chatManager = ChatManager.getInstanceFor(mXMPPConn);
EntityBareJid jid = JidCreate.entityBareFrom(mStrJabberID);
Chat chat = chatManager.chatWith(jid);
chatManager.addOutgoingListener(new OutgoingChatMessageListener()
@Override
public void newOutgoingMessage(EntityBareJid to, Message message, Chat chat)
System.out.format("OUTGOING: %s.\n", message);
);
chat.send(strMsg);
【问题讨论】:
奇怪,开启日志试试 我也有同样的问题,如果你解决了问题,请告诉我。 同样的问题..如果您找到了解决方案,请帮助... :( 【参考方案1】:我追踪了代码,发现这个版本的AbstractJidTypeFilter.class
有一个bug。
将您的版本从 Smack 4.2.0 更改为 Smack 4.2.2 应该可以。 希望它能解决你的问题。
【讨论】:
【参考方案2】:我正在调试 smack 的源代码。您可以尝试以下方法:
将 FromMode.USER 设置为连接
connection.setFromMode(XMPPConnection.FromMode.USER);
发送消息前设置消息类型
message.setType(org.jivesoftware.smack.packet.Message.Type.chat);
解释:
AbstractJidTypeFilter
检查来自jid
的消息是满的还是空的。连接将设置来自jid
的节,默认为null
。 (AbstractXMPPConnection.java#sendStanza
,第 666 行)
MessageTypeFilter
会检查消息类型是聊天还是正常。
【讨论】:
以上是关于Smack 4.2.0 OutgoingChatMessageListener 没有接到任何电话的主要内容,如果未能解决你的问题,请参考以下文章
hava jabber-bot。 XMPP over smack 4.2.0 with TLS
使用 smack 'XMPPError: service-unavailable - cancel' 传输文件失败
线程“主”java.lang.NoSuchFieldError 中的异常:如果可能
Smack 4.1.8 解析失败:Lorg/jivesoftware/smack/tcp/XMPPTCPConnectionConfiguration;