Android 如何从Openfire获取群聊离线消息

Android 如何从Openfire获取群聊离线消息,android,xmpp,chat,openfire,groupchat,Android,Xmpp,Chat,Openfire,Groupchat,在xmpp中,当我的用户登录并加入聊天室时,我可以通过任何方式获得多用户聊天的脱机消息 我想实现群聊比如WhatsApp,还有其他实现方法吗?请建议 提前感谢首先以这种方式声明多用户聊天 muc = new MultiUserChat(CONNECTION, room); try { muc.join(USERJID); } catch (SmackException.NoResponseException e) {

xmpp
中,当我的用户登录并加入聊天室时,我可以通过任何方式获得多用户聊天的脱机消息

我想实现群聊比如
WhatsApp
,还有其他实现方法吗?请建议


提前感谢

首先以这种方式声明多用户聊天

muc = new MultiUserChat(CONNECTION, room);
        try {
            muc.join(USERJID);
        } catch (SmackException.NoResponseException e) {
            e.printStackTrace();
        } catch (XMPPException.XMPPErrorException e) {
            e.printStackTrace();
        } catch (SmackException.NotConnectedException e) {
            e.printStackTrace();
        }
私有静态多用户聊天muc=null

然后在oncreate方法中,以这种方式实例化它

muc = new MultiUserChat(CONNECTION, room);
        try {
            muc.join(USERJID);
        } catch (SmackException.NoResponseException e) {
            e.printStackTrace();
        } catch (XMPPException.XMPPErrorException e) {
            e.printStackTrace();
        } catch (SmackException.NotConnectedException e) {
            e.printStackTrace();
        }
并在应用程序开始时调用此方法

void setMessageListner() {
        muc.addMessageListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) throws SmackException.NotConnectedException {
                Message msg = (Message)packet;
                msg.setSubject(msg,getBody);
                Logger.i("Received message  : "+msg.getBody()+" From "+msg.getSubject());
        });
    }

这样,每当用户进入群组聊天时,他将至少在
ejjaberd
中获得该群组的最后一条消息。当您进入聊天群组时,您必须输入您的最后一条时间戳,因为您将从该时刻收到消息

保存上一条消息的时间戳,并在您进入房间时保存,如下所示:

 MultiUserChat muc = new MultiUserChat(mConnection, room_name);
                Log.d(TAG, "JOINING => " + room_name);

                DiscussionHistory history = new DiscussionHistory();
                if (mLastMessageDate == null)
                    history.setMaxStanzas(300);
                else
                    history.setSince(mLastMessageDate); //timestamp from your last message

 muc.join(mNickName, null, history,
                            SmackConfiguration.getDefaultPacketReplyTimeout());

希望有帮助

谢谢回复,我尝试了这个,但它会给我所有的群聊信息谢谢回复,它会给我所有的群聊历史记录。如果这是解决方案,请将其标记为正确的:)hi lokesh如何获取最后一条消息的时间戳请帮助我我无法在chathi Zozelfefelfo群中获取脱机消息我如何获取最后一条消息的时间戳请help@zozelfelfo解决方案提供自组创建以来组的所有消息。。你知道如何在用户离开房间后才收到这些信息吗?