ユーザーがログインしてルームに参加すると、MultiUserChat のオフライン メッセージがxmpp
表示されます。
のようなグループチャットを実装したい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 を宣言します
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 に参加するたびに、グループの最後のメッセージを取得します