3

現在、SMACK API と Openfire を使用する際に直面している問題は、OfflineMessageManager を使用してサーバーからオフライン チャット メッセージを取得した後、特定のメッセージを削除できないことです。

このメソッドを使用して、メッセージのノードを取得します。ここで、offlineMessage は、取得するすべてのオフライン メッセージを保持する arrayList です。このノードは、stamps という名前の別の arrayList に保存されます。

((OfflineMessageInfo)offlineMessages.get(i)).getNode();

これは、オフライン メッセージの削除コードを実行する部分です。

omm.deleteMessages(stamps);

しかし、getMessageCount を実行すると、すべての offlineMessage がまだそこにあり、何も削除されないため、メソッドを参照して何か不足していないかを確認します。送信したパケットをログに記録し、受信した応答は、この Web サイトで言及されているものとまったく同じです。

すべてではなく特定のメッセージのみを削除する必要がある理由は、オフライン メッセージのダウンロード中に新しい受信メッセージがあり、自分のプレゼンスがまだ利用可能に設定されていないためです。すべてを削除することを選択した場合、それらの新しいメッセージはなくなります。削除しなかった場合、プレゼンスをオンラインに設定すると、取得したメッセージがあふれて重複が発生します。

編集済み:ちょうど今、null/random characterノードを渡すことを含むいくつかのテストを行い、サーバーはまだまったく同じ応答を返しました

06-26 15:00:53.276: D/debugger(24069): response : <iq id="remove_test" to="someone@something.com/Smack" type="result"></iq>

これはサーバー側の問題でしょうか?

4

0 に答える 0