【问题标题】:smack receive message in muc using 4.1.0 rc1smack 使用 4.1.0 rc1 在 muc 中接收消息
【发布时间】: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): ) 但监听器没有被调用

【问题讨论】:

标签: xmpp smack


【解决方案1】:

【讨论】:

  • 有人遇到同样的问题吗?
【解决方案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);

【讨论】:

    猜你喜欢
    • 2017-06-18
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2017-04-04
    • 2016-02-06
    • 2011-06-27
    相关资源
    最近更新 更多