2

ユーザーがログインしてルームに参加すると、MultiUserChat のオフライン メッセージがxmpp表示されます。

のようなグループチャットを実装したいWhatsApp, これを実装する他の方法はありますか?

前もって感謝します

4

2 に答える 2

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());

それが役に立てば幸い

于 2014-09-20T11:02:52.683 に答える
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 に参加するたびに、グループの最後のメッセージを取得します

于 2014-09-20T11:02:42.353 に答える