2013-04-05 20 views
5

Jak uzyskać DyskusjaHistoria pokoju MUC od MultiUserChat? Jestem w stanie stworzyć instancję i pokój MultiUserChat za pomocą biblioteki aSmack, teraz chcę pokazać wszystkie poprzednie rozmowy, które miały miejsce w pokoju.Jak otrzymać DiscussionHistory do pokoju MultiUserChat za pomocą aSmack?

Każdy, kto ma takie samo doświadczenie, pomóż mi. Wyszukiwałem wiele informacji na ten temat, ale wciąż nie otrzymałem żadnej odpowiedniej dokumentacji/wyjaśnienia.

Odpowiedz

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

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

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

Można również użyć

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

Niektóre przykłady są w kodzie testowym. Sprawdź test testDiscussionHistory.

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

+0

Oto ona wymagana do utrzymania tej samej instancji dla MUC lub możemy stworzyć cokolwiek chcemy. jeśli pojedyncza instancja wymagała zachowania tego MUC jako pojedynczej instancji w całej aplikacji. –

+0

tutaj za pomocą kodu otrzymuję tylko jedną wiadomość z historii (tj. Pierwszą wiadomość). nawet ustawiam 'history.setMaxStanzas (20)'. Chcę uzyskać ostatnie 20 wiadomości z tej historii. Proszę, pomóż mi z tym. –

+1

Po prostu dzwonisz do następnej wiadomości kilka razy. Każde połączenie pobiera następną wiadomość. W końcu odzyskasz wszystkie historyczne wiadomości i zablokujesz czekanie na następny w czasie rzeczywistym. – Robin