Как получить в автономном режиме сообщение группового чата от 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());
});
}
таким образом, каждый раз, когда пользователь попадает в групповой чат, он получает последние сообщения группы.