Ошибка идентификатора сообщения при соединении чата между 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:

идентификатор пакета: пустой идентификатор сообщения: пустой

Не могли бы вы сказать мне, почему идентификаторы нулевые? Я что-то здесь упускаю?

Другие вопросы по тегам