我們正在使用最新的Jars/SDK讀取/傳遞狀態和Web服務,以在所有平臺Android/iOS/Web上發送消息。 我將郵件作爲SetMarkable(True)
發送,但雙方收到的郵件都是false
。Quickblox:未收到讀取狀態
如果我重新加載來自Quickblox服務器的所有消息,那麼我可以看到所有消息都具有根據需求的Read/Delivery ID,但可標記屬性爲「0」/ false。
以下是關於聊天工作方式的一些細節: 我們打開聊天屏幕並加載我們的舊聊天。我們可以根據產品多次與一個用戶創建聊天,因此爲了滿足這一要求,我們將聊天的羣組對話視爲私人聊天。在發佈消息時,我們首先將消息發送給羣組,然後發送到私人聊天。還要注意我們正在使用自定義參數。
在安卓
這是我們發佈信息到組對話框JSON:
JSONObject jsonChild1 = new JSONObject();
//jsonChild1.put("id", id);
jsonChild1.put("chat_dialog_id", chat_dialog_id);
jsonChild1.put("message", message);
jsonChild1.put("send_to_chat", send_to_chat);
jsonChild1.put("markable", "1");
jsonChild1.put("product_id", productId);
Utility.showLog("Json String is", "" + jsonChild1.toString());...
這是我們發佈信息到組對話框,作爲回報,我們得到的響應,其中我們可標記值的JSON是1.但是,當我們重新獲得歷史記錄時,其可標記值爲0,儘管readId
和deliverId
工作正常。
對於私人發佈的數據:
JSONObject jsonChild1 = new JSONObject();
//jsonChild1.put("id", id);
jsonChild1.put("send_to_chat", send_to_chat);
jsonChild1.put("markable", "1");
jsonChild1.put("product_id", productId);
jsonChild1.put("grp_msg_dialog_id", chat_dialog_id);
jsonChild1.put("save_to_history", "1");
jsonChild1.put("recipient_id", otherUserChatId);
jsonChild1.put("message", message);
雖然Web服務是一樣的 - 「https://api.quickblox.com/chat/Message.json」 兩種,不同的是在參數。 此外,在舊罐子裏,我們有processMessageDelivered
和processmessageRead
,但在新罐子裏,我們嘗試申請新的課程,即消息StatusListener
,但它也不起作用。帶有新罐子的演示不包含與消息狀態相對應的任何信息。消息狀態只在收到消息傳遞狀態而沒有消息讀取的舊罐子中工作,因爲每次標記值都爲「0」或false。
UPDATE:我們需要在回調中可標記屬性,例如,對於下面的代碼工作: 在安卓
@Override
public void processMessage(QBPrivateChat chat, QBChatMessage message) {
if(message.isMarkable()){
try {
privateChat.readMessage(message.getId().toString());
} catch (XMPPException e) {
e.printStackTrace();
} catch (SmackException.NotConnectedException e) {
e.printStackTrace();
}
}
}
我正在使用** readIds **和** deliverIds **顯示讀取狀態,但我們需要檢查QuickBlox中使用的回調的可標記屬性。即** processMessageDelivered **,這是無法標記屬性的情況下完成的。請檢查以上問題中的更新以瞭解以下函數需要標記的代碼示例:** privateChat.readMessage(message.getId()。toString()); ** –
如果將markable設置爲1,則它將在內部爲true '而processMessage'。你說這不起作用? –
** processMessage **即使我們將值設置爲true,可標記值也會返回爲false。 –