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

Posted

技术标签:

【中文标题】用户无法在 Android Quickblox 聊天应用中接收离线消息【英文标题】:User can't receive offline message in android Quickblox chatting app 【发布时间】:2014-10-13 14:09:05 【问题描述】:

你好朋友,我正在开发一个聊天应用程序,我想在其中使用 XMPP 服务器。 所以我正在使用 android 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;
        
    

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于用户无法在 Android Quickblox 聊天应用中接收离线消息的主要内容,如果未能解决你的问题,请参考以下文章

在 quickblox 中未收到未读消息计数

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

使用 QuickBlox 聊天 SDK 发送图像 - Android

Quickblox chatRoomDidReceiveMessage 没有调用

Android:quickblox 来电视频通话收不到

无法解决:com.quickblox:quickblox-android-sdk-chat:2.6.1