Ошибка идентификатора сообщения при соединении чата между iOS и Android в Quickblox
У меня проблема с подключением устройства iOS и Android с соответствующими библиотеками QBChat и идентификаторами сообщений.
Объекты сообщений в библиотеке iOS Quickblox определяются как объекты QBChatMessage, которых нет в библиотеке Android Quickblox (которая делегирует их классу сообщений в библиотеке SMACK).
Проблема в том, что класс QBChatMessage управляет идентификаторами сообщений как целыми числами, а класс Message управляет ими как строками. Каждое сообщение, отправленное с моего устройства Android, содержит уникальную 7-символьную строку + номер с позицией сообщения в SMACK-чате. Когда мой iPhone получает сообщение, его идентификатором является число с идентификатором из SMACK, проанализированным столько, сколько он мог, как в этом примере связи (взятом с устройства 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>
Идентификатор сообщения важен для меня в порядке хранения базы данных. Как это возможно? Что я должен сделать, чтобы решить эту проблему?
Спасибо, всего наилучшего!:)
2 ответа
Даниэль, звучит хорошо. Помогает ли решение вашей проблемы изменить тип файла QBChatMessages.ID на NSString?
Сделаем это в следующем выпуске. Если у вас нет времени ждать - просто напишите со своей просьбой на support@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:
идентификатор пакета: пустой идентификатор сообщения: пустой
Не могли бы вы сказать мне, почему идентификаторы нулевые? Я что-то здесь упускаю?