Quickblox中iOS和Android之间连接聊天的消息id问题
我在将iOS和Android设备与其对应的QBChat库(带有消息ID)连接时遇到问题 Quickblox的iOS库中的消息对象被定义为QBChatMessage对象,这在Quickblox的Android库中是不存在的(后者将它们委托给SMACK库中的消息类) 问题是QBChatMessage类将消息id作为整数管理,而message类将它们作为字符串管理。从我的Android设备发送的每条消息都有一个7个字符的唯一字符串+一个数字,带有消息在SMACK chat中的位置。当我的iPhone接收到消息时,它的ID是一个数字,并且尽可能多地解析了SMACK的ID,就像这个通信示例(取自Android设备):Quickblox中iOS和Android之间连接聊天的消息id问题,android,ios,quickblox,Android,Ios,Quickblox,我在将iOS和Android设备与其对应的QBChat库(带有消息ID)连接时遇到问题 Quickblox的iOS库中的消息对象被定义为QBChatMessage对象,这在Quickblox的Android库中是不存在的(后者将它们委托给SMACK库中的消息类) 问题是QBChatMessage类将消息id作为整数管理,而message类将它们作为字符串管理。从我的Android设备发送的每条消息都有一个7个字符的唯一字符串+一个数字,带有消息在SMACK chat中的位置。当我的iPhone接
SENT{“content”:{“text”:“hello”},键入:1}7J9230
发送{“内容”:{“文本”:“耶”},“类型”:1}7J9230
已发送{“内容”:{“文本”:“测试”},“类型”:1}7J9230
RCV{“content”:{“text”:“hello”},“type”:1}
RCV{“内容”:{“文本”:“是吗?”},“类型”:1}
RCV{“内容”:{“文本”:“耶!”},“类型”:1}
消息的ID对我来说很重要,以数据库存储的顺序排列。这怎么可能?我应该如何解决这个问题
谢谢,亲切的问候!:) 丹尼尔,听起来不错。
将QBChatMessages.ID的类型更改为NSString是否可以解决您的问题
将在下一个版本中执行此操作。如果你没有时间等待,只需写下你的请求就可以了assist@quickblox.com,将为您专门构建SDK下面是我的群组聊天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:null
你能告诉我为什么ID是空的吗?我是不是遗漏了什么?非常感谢!在我看来,将iOS中的id更改为NSString将是最简单也是最好的解决方案。然而,我自己解决了这个问题,在Android中自己管理ID,并使用SMACK的Message类进行通信,而不是使用String进行通信。
/* 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());
}
});
}