我在将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对我很重要。这怎么可能?我该怎么做才能解决这个问题?
谢谢,亲切的问候! :)
答案 0 :(得分:0)
将在下一版本中执行此操作。如果您没有时间等待 - 只需将您的请求写入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为空?我在这里错过了什么吗?