1
votes

Hello friends i am developing an chatting app in which i want to use XMPP server. so am using android Quickblox chatting sample project. i have successfully create a simple text chatting app. but the problem is that when booth user (sender and receiver) are online it works fine but if second user(receiver) is offline he cant receive offline message when he get online. i am using this code for message process.

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;
        }
    }
}
1

1 Answers

0
votes

It would be better fully use QuickBlox SDK. How you can connect xmpp+QB chat, if QBchat is already written on xmpp?