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