smack 4.1.8+를 사용하여 동일한 리스너에서 단일 사용자 채팅 및 다중 사용자 채팅의 수신 메시지를 듣는 방법

혼자 Vaibhav

동일한 리스너에서 다중 사용자 채팅 및 단일 사용자 채팅에 대한 수신 메시지를 수신하는 방법. 이제 단일 사용자 채팅을 위해 다음 코드를 사용하고 있습니다.

chatManager.addChatListener(new ChatManagerListener() {
        @Override
        public void chatCreated(Chat chat, boolean createdLocally) {

    chat.addMessageListener(new ChatStateListener() {
        @Override
        public void stateChanged(Chat chat, ChatState state) {

            Log.d(TAG,"...stateChanged called...");

            if (ChatState.composing.equals(state)) {
                Log.d("Chat State",chat.getParticipant() + " is typing..");
            } else if (ChatState.gone.equals(state)) {
                Log.d("Chat State",chat.getParticipant() + " has left the conversation.");
            } else {
                Log.d("Chat State",chat.getParticipant() + ": " + state.name());
            }
        }

        @Override
        public void processMessage(Chat chat, Message message) {

            Log.d(TAG,"---Received a message---");
            Log.d(TAG,"participant: "+chat.getParticipant());
            Log.d(TAG,"message.getBody(): "+message.getBody());
            Log.d(TAG,"message.getFrom(): "+message.getFrom());
            Log.d(TAG,"message.getType(): "+message.getType());
            Log.d(TAG,"message.getSubject(): "+message.getSubject());

            String from=message.getFrom();
            String sender_id="";
            if(from.contains("/"))
            {
                sender_id=from.split("/")[0];
                Log.d(TAG,"The real sender_id is :" +sender_id);
            }
            else
            {
                sender_id=from;
            }

            Intent intent=new Intent(ChattingConnectionService.NEW_MESSAGE);
            intent.setPackage(mContext.getPackageName());
            intent.putExtra(ChattingConnectionService.BUNDLE_FROM_USERID,sender_id);
            intent.putExtra(ChattingConnectionService.BUNDLE_MESSAGE_BODY,message.getBody());
            mContext.sendBroadcast(intent);
            Log.d(TAG,"Received message from :"+sender_id+" broadcast sent.");
        }
    });

        }
    });

다중 사용자 채팅의 경우 다음 코드를 사용하고 있습니다.

 multiUserChat=multiUserChatManager.getMultiUserChat(stringExtra);
    multiUserChat.addMessageListener(new MessageListener() {
        @Override
        public void processMessage(Message message) {
            Log.d(TAG,"---process message called in joinRoom method");
            Log.d(TAG,"---Received a message from: "+message.getFrom());
            Log.d(TAG,"message.getBody(): "+message.getBody());
            Log.d(TAG,"message.getFrom(): "+message.getFrom());
            Log.d(TAG,"message.getType(): "+message.getType());
            Log.d(TAG,"message.getSubject(): "+message.getSubject());

            if(message.getBody()!=null)
            {
                Intent intent=new Intent(ChattingConnectionService.NEW_MESSAGE);
                intent.setPackage(mContext.getPackageName());
                intent.putExtra(ChattingConnectionService.BUNDLE_FROM_USERID,message.getFrom());
                intent.putExtra(ChattingConnectionService.BUNDLE_MESSAGE_BODY,message.getBody());
                mContext.sendBroadcast(intent);
                Log.d(TAG,"Received message from :"+message.getFrom()+" broadcast sent.");
            }
        }
    });

동일한 리스너에서 이러한 모든 수신 메시지를 듣고 싶습니까? 제발 도와주세요? 나는 사무실에서 불타고있다. 미리 감사드립니다.

Timbillstrom

채팅 인프라가 어떻게 생겼는지 모르겠지만 어쨌든 Firebase 클라우드 메시징 API (이전 Google 클라우드 메시징)를 사용하는 것이 좋습니다.

사용자 Auser 에게 메시지를 보낼 B때 서버가이 메시지를 받으면 Firebase 클라우드 메시징을 사용하여 사용자 B에게 메시지 또는 페이로드를 보내고 사용자 에게 메시지를 수신했음을 알릴 수 있습니다.

A그룹 workaholics채팅 경우 위의 솔루션을 사용할 수 있습니다. 사용자 가 그룹 채팅에 메시지를 보냈을 채팅 서버가 해당 방의 모든 수신자 (예 : 사용자 BC.

그룹 채팅의 리스너를 처리하는 또 다른 팁은 여기에있는 Firebase 클라우드 메시징 주제 메시징 기능 을 사용하는 것입니다.

https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

FCM (Firebase 클라우드 메시징)은 특정 기기 또는 기기 그룹에 알림을 보낼 때 사용하는 방법입니다. Android, iOS 등에서 모두 작동합니다 ..

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관