2014-10-13 2 views
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; 
     } 
    } 
} 

답변

0

QuickBlox SDK를 사용하는 것이 더 좋을 것입니다. QBchat가 이미 xmpp에 쓰여 있다면 xmpp + QB 채팅에 어떻게 연결할 수 있습니까?

관련 문제