目前我在使用 SMACK API 和 Openfire 时面临的问题是,在我使用 OfflineMessageManager 从服务器检索离线聊天消息后,我无法删除特定消息。
我使用这种方法来获取消息的节点,其中offlineMessage 是一个arrayList,其中包含我检索到的所有离线消息。Thos 节点将保存在另一个名为 stamps 的 arrayList 中。
((OfflineMessageInfo)offlineMessages.get(i)).getNode();
这是我执行离线消息选择代码的部分
omm.deleteMessages(stamps);
但是当我运行 getMessageCount 时,我所有的 offlineMessage 仍然存在,没有一个被删除,所以我浏览该方法以查看我是否遗漏了什么。当我记录我发送和响应我收到的数据包时,与本网站上提到的完全相同。
因为我只需要删除特定消息而不是全部的原因是因为在我下载离线消息时可能有新的传入消息并且我的状态尚未设置为可用。如果我选择全部删除,那些新消息就会消失。如果我没有删除它,一旦我将状态设置为在线,我检索到的那些消息将泛滥并导致重复。
编辑:刚才我做了一些更多的测试,包括传递一个空/随机字符节点,服务器仍然给出完全相同的响应
06-26 15:00:53.276: D/debugger(24069): response : <iq id="remove_test" to="someone@something.com/Smack" type="result"></iq>
这会是服务器端问题吗?