1

以下是我用于群聊的 Android 代码:

    /* Sends messages */
    public void sendChatMessage(String text)
    {
        Message message = muc.createMessage();
        message.setBody(text);
        message.setPacketID("ABC_1");
        muc.sendMessage(message);
    }

    /* Listens for messages */
    public void receiveMessage()
    {
      muc.addMessageListener(new PacketListener() {
                 public void processPacket(Packet packet) 
                 {
                   final Message message = (Message) packet;
                   log.i("packed  id: ", packet.getPacketID());
                   log.i("message id: ", message.getPacketID());
                 }
        });
     }

我在 logcat 中看到的输出是:

数据包ID:空

消息ID:空

你能告诉我为什么ID是空的吗?我在这里错过了什么吗?

4

1 回答 1

1

没关系

关于 XMPP 标准,房间不处理消息 ID,因此它将为空

这是一个例子

发送消息到房间:

 <message to="92_testroom2134@muc.chat.quickblox.com" id="366" type="groupchat"><body>Hello QuickBlox developer!</body></message>

收到来自房间的消息:

<message xmlns="jabber:client" type="groupchat" from="92_testroom2134@muc.chat.quickblox.com/298" to="298-92@chat.quickblox.com/tigase-19912"><body>Hello QuickBlox developer!</body></message>

收到的消息中没有 ID

ID 仅用于 1-1 聊天

您可以向消息添加自定义参数,只需使用http://www.igniterealtime.org/builds/smack/docs/3.2.2/javadoc/org/jivesoftware/smack/packet/Packet.html#setProperty(java.lang. String , java.lang.Object) 设置

http://www.igniterealtime.org/builds/smack/docs/3.2.2/javadoc/org/jivesoftware/smack/packet/Packet.html#getProperty(java.lang.String)

进入听众

于 2013-07-01T10:14:00.727 回答