2013-04-05 4 views
5

Wie bekomme ich die DiscussionHistory eines MUC Zimmer von MultiUserChat? Ich bin in der Lage, MultiUserChat Instanz und Raum zu schaffen, indem ich aSmack Bibliothek verwende, jetzt will ich alle vorherigen Gespräche zeigen, die im Raum geschahen.How to Get DiscussionHistory für MultiUserChat Zimmer mit aSmack?

Jeder in der gleichen Erfahrung bitte helfen Sie mir. Ich habe viel über Google gesucht, aber trotzdem habe ich keine richtige Dokumentation/Erklärung dazu bekommen.

Antwort

14
DiscussionHistory history = new DiscussionHistory(); 
history.setSince(date); 

muc.join(nickname, null, history, SmackConfiguration.getReplyTimeout()); 

// Get historical message; 
Message oldMsg = muc.nextMessage(timeout); 

können Sie auch

history.setMaxChars() 
history.setMaxStanzas() 
history.setSeconds() 

Einige Beispiele sind im Testcode verwenden. Überprüfen Sie den Test testDiscussionHistory.

http://fisheye.igniterealtime.org/browse/smack/trunk/test/org/jivesoftware/smackx/muc/MultiUserChatTest.java?hb=true

+0

Hier ist es für MUC gleiche Instanz aufrechtzuerhalten erforderlich oder wir können schaffen, was wir wollen. Wenn eine einzelne Instanz erforderlich ist, wie diese MUC als einzelne Instanz in der gesamten Anwendung beibehalten wird. –

+0

hier mit Ihrem Code ich bekomme nur eine Nachricht aus der Geschichte (d. H. Erste Nachricht). selbst wenn ich 'history.setMaxStanzas (20)' gesetzt habe. Ich möchte die letzten 20 Nachrichten aus dieser Geschichte bekommen. Bitte hilf mir dabei. –

+1

Sie rufen nextMessage einfach mehrmals auf. Jeder Anruf ruft die nächste Nachricht ab. Schließlich werden Sie alle historischen Nachrichten abrufen und auf die nächste Echtzeit warten. – Robin