当我的用户登录并加入会议室时,xmpp
是否可以获得MultiUserChat的离线消息。
我希望实施群聊,如WhatsApp
,是否有其他方式可以实施此建议
提前致谢
答案 0 :(得分:7)
至少在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());
希望有所帮助
答案 1 :(得分:0)
首先以这种方式声明MultiUserChat
private static 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());
});
}
这样一旦用户进入GroupChat,他将获得该组的最后一条消息