用户无法在Android Quickblox聊天应用程序中接收离线消息

时间:2014-10-13 14:09:06

标签: android xmpp quickblox

朋友您好我正在开发一个聊天应用,我想在其中使用XMPP服务器。 所以我正在使用android Quickblox聊天示例项目。 我已成功创建一个简单的文本聊天应用程序。 但问题是,当booth用户(发送者和接收者)在线时它工作正常但是 如果第二个用户(接收者)离线,他上网时无法接收离线消息。 我正在使用此代码进行消息处理。

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 个答案:

答案 0 :(得分:0)

最好完全使用QuickBlox SDK。如果QBchat已经写在xmpp上,你如何连接xmpp + QB聊天?

相关问题