当我的用户登录并加入房间时,有什么方法xmpp
可以让我收到MultiUserChat 的离线消息。
我想像这样实现群聊WhatsApp
,还有其他方法可以实现吗?请建议
提前致谢
至少在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());
});
}
这样,每当用户进入 GroupChat 时,他都会收到该组的最后一条消息