2013-04-05 1 views
5

Как получить ОбсуждениеИстория комнаты MUC от MultiUserChat? Я могу создать экземпляр и комнату MultiUserChat с помощью библиотеки aSmack, теперь я хочу показать все предыдущие разговоры, которые произошли в комнате.Как получить обсуждениеИстория для комнаты MultiUserChat с помощью aSmack?

Любой, кто испытал это, пожалуйста, помогите мне. Я Google много искал об этом, но до сих пор у меня не было надлежащей документации/объяснения.

ответ

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

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

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

Вы также можете использовать

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

Некоторые примеры находятся в тестовом коде. Проверьте тест testDiscussionHistory.

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

+0

Вот это требуется для поддержания одного экземпляра для MUC или мы можем создать все, что мы хотим. если один экземпляр потребовал, чтобы поддерживать MUC как единый экземпляр во всем приложении. –

+0

здесь, используя ваш код, я получаю только одно сообщение из истории (первое сообщение). даже я установил 'history.setMaxStanzas (20)'. Я хочу получить последние 20 сообщений из этой истории. Пожалуйста помоги мне с этим. –

+1

Вы просто вызываете nextMessage несколько раз. Каждый вызов получает следующее сообщение. В конце концов вы получите все исторические сообщения и блок, ожидающие следующего в реальном времени. – Robin