消息ID问题在Quickblox中连接iOS和Android之间的聊天

时间:2013-04-22 11:25:23

标签: android ios quickblox

我在将iOS和Android设备与相应的QBChat库连接时遇到问题,并带有消息ID。

Quickblox的iOS库中的消息对象被定义为QBChatMessage对象,Quickblox的Android库中没有它(将它们委托给SMACK库中的Message类)。

问题是QBChatMessage类将消息ID作为整数进行管理,而Message类将它们作为字符串进行管理。从我的Android设备发送的每条消息都有一个7个字符的唯一字符串+一个带有消息在SMACK聊天中的位置的数字。当我的iPhone收到消息时,其ID是一个数字,其中SMACK的ID尽可能多地被解析,如此通信示例(取自Android设备):

SENT <message id="D64u5-4" to="102521-1799@chat.quickblox.com" from="132505-1799@chat.quickblox.com/Smack" type="chat"><body>{"content":{"text":"hello"},"type":1}</body><thread>7J9230</thread></message>
SENT <message id="D64u5-5" to="102521-1799@chat.quickblox.com" from="132505-1799@chat.quickblox.com/Smack" type="chat"><body>{"content":{"text":"yeah"},"type":1}</body><thread>7J9230</thread></message>
SENT <message id="D64u5-6" to="102521-1799@chat.quickblox.com" from="132505-1799@chat.quickblox.com/Smack" type="chat"><body>{"content":{"text":"test"},"type":1}</body><thread>7J9230</thread></message>

RCV <message id="0" from="102521-1799@chat.quickblox.com" type="chat" xmlns="jabber:client" to="132505-1799@chat.quickblox.com"><body>{"content":{"text":"hello"},"type":1}</body></message>
RCV <message id="1" from="102521-1799@chat.quickblox.com" type="chat" xmlns="jabber:client" to="132505-1799@chat.quickblox.com"><body>{"content":{"text":"yeah?"},"type":1}</body></message>
RCV <message id="2" from="102521-1799@chat.quickblox.com" type="chat" xmlns="jabber:client" to="132505-1799@chat.quickblox.com"><body>{"content":{"text":"yeah!"},"type":1}</body></message>

根据数据库存储的顺序,消息的ID对我很重要。这怎么可能?我该怎么做才能解决这个问题?

谢谢,亲切的问候! :)

2 个答案:

答案 0 :(得分:0)

丹尼尔,听起来不错。 将QBChatMessages.ID的类型更改为NSString会解决您的问题吗?

将在下一版本中执行此操作。如果您没有时间等待 - 只需将您的请求写入assist@quickblox.com,就会为您制作专门的SDK

答案 1 :(得分:0)

以下是我的群聊聊天的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:null message id:null

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