Как получить в автономном режиме сообщение группового чата от Openfire

Есть ли способ в xmpp что я получаю офлайновое сообщение MultiUserChat, когда мой пользователь входит в систему и входит в комнату.

Я хочу реализовать групповой чат, как WhatsAppЕсть ли другой способ реализовать это, пожалуйста, предложите

заранее спасибо

2 ответа

Решение

По крайней мере в 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());

Надеюсь, поможет

Сначала объявите MultiUserChat таким образом

приватная статическая MultiUserChat 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());
        });
    }

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

Другие вопросы по тегам