2013-04-05 18 views
5

Cách lấy Bàn luận về phòng MUC từ MultiUserChat? Tôi có thể tạo ra cá thể và phòng của MultiUserChat bằng cách sử dụng thư viện aSmack, bây giờ tôi muốn hiển thị tất cả các cuộc hội thoại trước đó đã xảy ra trong phòng.Làm thế nào để có được DiscussionHistory cho phòng MultiUserChat bằng cách sử dụng aSmack?

Bất kỳ ai cũng có kinh nghiệm như vậy, hãy giúp tôi. Tôi Google đã tìm kiếm rất nhiều về điều này nhưng tôi vẫn chưa nhận được bất kỳ tài liệu/giải thích thích hợp nào về vấn đề này.

Trả lời

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

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

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

Bạn cũng có thể sử dụng

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

Một số ví dụ là trong mã kiểm tra. Kiểm tra bài kiểm tra testDiscussionHistory.

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

+0

Đây là trường hợp cần thiết để duy trì cùng một phiên bản cho MUC hoặc chúng tôi có thể tạo bất kỳ thứ gì mình muốn. nếu cá thể đơn yêu cầu cách duy trì MUC đó như là một cá thể đơn lẻ trong toàn bộ ứng dụng. –

+0

tại đây bằng cách sử dụng mã của bạn, tôi chỉ nhận được một tin nhắn từ lịch sử (tức là tin nhắn đầu tiên). thậm chí tôi đặt 'history.setMaxStanzas (20)'. tôi muốn nhận được 20 tin nhắn cuối cùng từ lịch sử này. Xin hãy giúp tôi về điều này. –

+1

Bạn chỉ cần gọi nextMessage nhiều lần. Mỗi cuộc gọi sẽ truy xuất tin nhắn tiếp theo. Cuối cùng, bạn sẽ lấy tất cả các thông điệp lịch sử và khối chờ đợi cho một thời gian thực tiếp theo. – Robin

Các vấn đề liên quan