1
안녕하세요, 저는 XMPP 서버를 사용하고자하는 채팅 앱을 개발 중입니다. 안드로이드 Quickblox 채팅 샘플 프로젝트를 사용하고 있습니다. 나는 간단한 텍스트 채팅 앱을 성공적으로 만들었습니다. 문제는 부스 사용자 (발신자와 수신자)가 온라인 일 때 잘 작동하지만 두 번째 사용자 (수신자)가 오프라인 인 경우 온라인 상태가되면 오프라인 메시지를 수신 할 수 없습니다. 메시지 처리에이 코드를 사용하고 있습니다.사용자가 안드로이드에서 오프라인 메시지를받을 수 없습니다. Quickblox 채팅 앱
public class SingleChat implements Chat, ChatMessageListener {
public static final String EXTRA_USER_ID = "user_id";
private ChattingActivity chatActivity;
private QBPrivateChat chat;
private int companionId;
private MessageConstant messageConstant;
private DataBaseHelper dbHelper;
Context appContext;
public SingleChat(ChattingActivity chatActivity) {
this.chatActivity = chatActivity;
companionId =Integer.valueOf(CampanionUserProfile.CAMOANION_USER_ID);
chat = QBChatService.getInstance().createChat();
chat.addChatMessageListener(this);
appContext=this.chatActivity;
dbHelper =new DataBaseHelper(appContext);
}
@Override
public void sendMessage(String message) throws XMPPException {
Message message2=new Message();
chat.sendMessage(companionId, message);
}
@Override
public void release() {
chat.removeChatMessageListener(this);
}
@Override
public void processMessage(Message message) {
final String messageBody = message.getBody();
String senderid=message.getFrom().split("-")[0];
// Show message
if (CampanionUserProfile.CAMOANION_USER_ID.equals(senderid)) {
messageConstant=new MessageConstant();
messageConstant.setUser_id(CampanionUserProfile.CAMOANION_USER_ID);
messageConstant.setUser_name(CampanionUserProfile.CAMOANION_USER_NAME);
messageConstant.setUser_phonenumber(CampanionUserProfile.CAMOANION_USER_PH_NO);
messageConstant.setUser_pic(CampanionUserProfile.CAMOANION_USER_PIC);
messageConstant.setMessage_body(messageBody);
messageConstant.setMessage_from("you");
messageConstant.setMessage_time(Calendar.getInstance().getTime()+"");
messageConstant.setMessage_type(messageConstant.MSG_TYPE_TEXT);
chatActivity.showMessage(new ChatMessage(messageBody, Calendar.getInstance().getTime(), true));
} else {
UserFriends userFriends=dbHelper.getUserInfo(senderid);
messageConstant=new MessageConstant();
messageConstant.setUser_id(CampanionUserProfile.CAMOANION_USER_ID);
messageConstant.setUser_name(userFriends.getUser_name());
messageConstant.setUser_phonenumber(userFriends.getUser_phonenumber());
messageConstant.setUser_pic(userFriends.getUser_pic());
messageConstant.setMessage_body(messageBody);
messageConstant.setMessage_from("you");
messageConstant.setMessage_time(Calendar.getInstance().getTime()+"");
messageConstant.setMessage_type(messageConstant.MSG_TYPE_TEXT);
}
dbHelper.insertIntoChattingHostory(messageConstant);
Log.e("processMessage", messageBody+"/Come From :"+senderid);
Log.e("processMessage", messageBody+"/Chat with :"+CampanionUserProfile.CAMOANION_USER_ID);
}
@Override
public boolean accept(Message.Type messageType) {
switch (messageType) {
case chat:
return true;
default:
return false;
}
}
}