2013-04-22 53 views
0

我在使用消息ID連接iOS和Android設備及其相應的QBChat庫時遇到問題。在Quickblox中iOS和Android之間連接聊天的消息ID問題

Quickblox的iOS庫中的消息對象被定義爲QuickBlox的Android庫(將它們委託給SMACK庫中的Message類)中不存在的QBChatMessage對象。

問題是,QBChatMessage類管理消息ID的整數,而消息類管理他們作爲字符串。從我的Android設備發送的每條消息都有一個7個字符的唯一字符串+一個包含消息在SMACK聊天中的位置的數字。當我的iPhone收到消息,它的ID是從咂了ID的數量分析爲多,因爲它可以,因爲這種溝通樣品(從Android設備拍攝)中:

SENT <message id="D64u5-4" to="[email protected]" from="[email protected]/Smack" type="chat"><body>{"content":{"text":"hello"},"type":1}</body><thread>7J9230</thread></message> 
SENT <message id="D64u5-5" to="[email protected]" from="[email protected]/Smack" type="chat"><body>{"content":{"text":"yeah"},"type":1}</body><thread>7J9230</thread></message> 
SENT <message id="D64u5-6" to="[email protected]" from="[email protected]/Smack" type="chat"><body>{"content":{"text":"test"},"type":1}</body><thread>7J9230</thread></message> 

RCV <message id="0" from="[email protected]" type="chat" xmlns="jabber:client" to="[email protected]"><body>{"content":{"text":"hello"},"type":1}</body></message> 
RCV <message id="1" from="[email protected]" type="chat" xmlns="jabber:client" to="[email protected]"><body>{"content":{"text":"yeah?"},"type":1}</body></message> 
RCV <message id="2" from="[email protected]" type="chat" xmlns="jabber:client" to="[email protected]"><body>{"content":{"text":"yeah!"},"type":1}</body></message> 

消息的ID對我很重要,按數據庫存儲的順序。這怎麼可能?我該怎麼做才能解決這個問題?

謝謝,親切的問候! :)

回答

0

丹尼爾,聽起來不錯。 正在改變QBChatMessages.ID到NSString的類型將解決您的問題?

在下一個版本中會這樣做。如果你沒有時間去等待 - 只要你的要求[email protected]寫,會使SDK特別爲您構建

+0

非常感謝!在我看來,將iOS中的id改爲NSString將是最簡單和最好的解決方案。然而,我自己通過在Android中管理自己的id並使用SMACK的Message類進行通信來設法解決這個問題,而不是使用String進行通信。 – dinoenri 2013-04-23 09:50:46

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()); 
      } 
     }); 
    } 

的輸出I在logcat中看到的是

包ID:空 消息ID:空

你能告訴我,爲什麼ID是空?我在這裏錯過了什麼嗎?