smack 使用 4.1.0 rc1 在 muc 中接收消息
Posted
技术标签:
【中文标题】smack 使用 4.1.0 rc1 在 muc 中接收消息【英文标题】:smack receive message in muc using 4.1.0 rc1 【发布时间】:2015-04-06 11:13:30 【问题描述】:谁能告诉我如何使用 Smack 4.1.0 rc1 在 muc 中接收消息?
我可以使用以下代码发送消息。
Message message = new Message();
message.setType(Message.Type.groupchat);
message.setBody(strMessage);
message.setTo(roomJid);
multiUserChat.sendMessage(message);
我正在使用以下代码,但无法收到消息。
multiUserChat = multiUserChatManager.getMultiUserChat(roomJid);
multiUserChat.addMessageListener(new MessageListener()
@Override
public void processMessage(Message message)
Log.i(Constant.TAG, "processMessage");
);
我的调试已打开,我可以看到应用正在接收消息(D/SMACK(6098): RECV (1): ) 但监听器没有被调用
【问题讨论】:
你读过 Smack 的 MUC 文档吗? @Flow 我已经查看了它,但我没有找到它。 igniterealtime.org/builds/smack/docs/latest/documentation/… @Hitendra 你找到解决方案了吗?我现在已经有这个问题了。 【参考方案1】:使用MultiUserChat.addMessageListener(MessageListener)
。
【讨论】:
有人遇到同样的问题吗?【参考方案2】:在向 muc 添加消息侦听器之前向 muc 发送出席信息/加入。
然后您将收到 muc 消息到侦听器中。
如果不发送出席信息或加入 muc,您无法将消息发送到侦听器,但您可以在 logcat 中看到。
【讨论】:
我已经使用了 addSyncPacketListener 并且我能够做到。我会尝试你的建议并告诉你。【参考方案3】:我正在使用节侦听器并且能够接收 MUC 消息。
final StanzaListener stanzaListener = new StanzaListener()
@Override
public void processStanza(Stanza packet) throws SmackException.NotConnectedException, InterruptedException ..
xmppConnection.addAsyncStanzaListener(stanzaListener, StanzaTypeFilter.MESSAGE);
【讨论】:
以上是关于smack 使用 4.1.0 rc1 在 muc 中接收消息的主要内容,如果未能解决你的问题,请参考以下文章