동일한 리스너에서 다중 사용자 채팅 및 단일 사용자 채팅에 대한 수신 메시지를 수신하는 방법. 이제 단일 사용자 채팅을 위해 다음 코드를 사용하고 있습니다.
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.");
}
}
});
동일한 리스너에서 이러한 모든 수신 메시지를 듣고 싶습니까? 제발 도와주세요? 나는 사무실에서 불타고있다. 미리 감사드립니다.
채팅 인프라가 어떻게 생겼는지 모르겠지만 어쨌든 Firebase 클라우드 메시징 API (이전 Google 클라우드 메시징)를 사용하는 것이 좋습니다.
사용자 A
가 user 에게 메시지를 보낼 B
때 서버가이 메시지를 받으면 Firebase 클라우드 메시징을 사용하여 사용자 B
에게 메시지 또는 페이로드를 보내고 사용자 에게 메시지를 수신했음을 알릴 수 있습니다.
A
그룹 workaholics
채팅 의 경우 위의 솔루션을 사용할 수 있습니다. 사용자 가 그룹 채팅에 메시지를 보냈을 때 채팅 서버가 해당 방의 모든 수신자 (예 : 사용자 B
및 C
.
그룹 채팅의 리스너를 처리하는 또 다른 팁은 여기에있는 Firebase 클라우드 메시징 의 주제 메시징 기능 을 사용하는 것입니다.
https://firebase.google.com/docs/cloud-messaging/android/topic-messaging
FCM (Firebase 클라우드 메시징)은 특정 기기 또는 기기 그룹에 알림을 보낼 때 사용하는 방법입니다. Android, iOS 등에서 모두 작동합니다 ..
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다