消息

发送消息

QDResultCallBack 是全局的接口,主要用于用户调用接口是否成功

public interface QDResultCallBack<T> {

    void onError (String errorMsg); //失败 errorMsg表示失败信息

    void onSuccess(T t); //成功 T表示成功后返回的对象
}

    /**
     * 发送个人文本消息
     * @param user 聊天对象
     * @param content 内容
     * @param callBack 监听
     * @return
     */
    sendPersonMessage(QDUser user, String content, QDResultCallBack callBack) 
    /**
     * 发送群组文本消息
     * @param group 群组对象
     * @param content 内容
      * @param callBack 监听
     * @return QDMessage 返回消息对象
     */
   QDMessage sendGroupMessage(QDGroup group, String content, QDResultCallBack callBack)
    /**
     * 重发个人信息
     * @param message 消息对象
     * @param callBack 监听
     */
   resendPersonMessage(QDMessage message, QDResultCallBack callBack)
/**
     * 重发群组信息
     * @param message 消息对象
     * @param callBack 监听
     */
resendGroupMessage(QDMessage message, QDResultCallBack callBack)
    /**
     * 发送个人信息
     * @param user 聊天对象
     * @param message 消息对象
     * @param callBack
     */
    sendMessage(QDUser user, QDMessage message, QDResultCallBack callBack)
     /**
     * 个人消息转发
     * @param user 转发对象
     * @param message 转发消息对象
     * @param callBack
     */
    forwardMessage(QDUser user, QDMessage message, QDResultCallBack callBack)
     /**
     * 群组消息转发
     * @param group 转发群组对象
     * @param message 转发消息对象
     * @param callBack
     */
    public void forwardGMessage(QDGroup group, QDMessage message, QDResultCallBack callBack)
    /**
     * 发送位置信息
     * @param user 聊天对象
     * @param locInfo 定位信息("经度;纬度;详细地址;简要地址")
     * @param callBack
     * @return QDMessage 返回消息对象
     */
    QDMessage sendLocationMessage(QDUser user, String locInfo, QDResultCallBack callBack)
    /**
     * 发送群组位置消息
     * @param group 群组对象
     * @param locInfo 定位信息("经度;纬度;详细地址;简要地址")
     * @param callBack
     * @return QDMessage 返回消息对象
     */
    QDMessage sendGLocationMessage(QDGroup group, String locInfo, QDResultCallBack callBack)

接收消息

群组消息是每个群组接收的消息,所以返回接收消息的会有群组id,个人消息接收是全部通过一个接口,接收的时候需要判断消息的发送者和接收者是否是聊天的双方
消息接收 QDMessageCallBack
    //个人消息接收
    void onReceive(List<QDMessage> message);
    //群组消息接收
    void onReceiveGMsg(String groupId, List<QDMessage> messageList);
    //消息设置已读
    void onMsgReaded(String userId);
    //撤回消息返回
    void onRevokeMessage(String msgId, String errorMsg);

在需要接受消息的页面的onCreate方法中添加消息监听
QDGroupCallBackManager.getInstance().addCallBack(this);

消息相关对象

消息对象 QDMessage

   //消息状态
   MSG_STATUS_SENDING  // 发送中
   MSG_STATUS_SEND_OK // 发成功
   MSG_STATUS_SEND_FAILED // 发送失败
   MSG_STATUS_READ_ACK // 发送的消息对方已读回执
   MSG_STATUS_RECEIVE // 接收的消息
   //消息方向(判断是发送的还是接收的)
   DIRECTION_OUT //发送的消息
   DIRECTION_IN //接收的消息
    //消息类型
    MSG_TYPE_TEXT // 文本消息
    MSG_TYPE_RICH_TEXT  // 富文本消息
    MSG_TYPE_IMAGE   // 图片
    MSG_TYPE_FILE  // 文件
    MSG_TYPE_AUDIO    // 音频
    MSG_TYPE_VIDEO    // 视频
    MSG_TYPE_LOCATION   // 位置
    MSG_TYPE_LINK   // 链接消息
    MSG_TYPE_NOTIFY   // 个人通知
    MSG_TYPE_CANCEL   // 撤回消息
    MSG_TYPE_VOICE    //语音消息
    MSG_TYPE_SHOOT   //小视频
    MSG_TYPE_CMD = "cmd";
    MSG_TYPE_CONFIRM //签收消息
    MSG_TYPE_CONFIRMED  //确认签收消息
    //消息读取状态
    MSG_UNREAD //未读
    MSG_READED //已读
    MSG_IGNORE //已读红点还在
   //消息文件状态
    MSG_FILE_STATUS_UPLOADING  //文件正在上传
   MSG_FILE_STATUS_UPLOADED   //文件上传成功
   MSG_FILE_STATUS_UPLOAD_FAILED //文件上传失败
    MSG_FILE_STATUS_UNDOWNLOAD //文件还没有下载
    MSG_FILE_STATUS_DOWNLOADED//文件下载成功
    MSG_FILE_STATUS_DOWNLOAD_FAILED  //文件下载失败

    String msgId;  //消息ID
    String cid; //会话id(服务器数据会有关联和本地的会话id无关联)
    int ctype;  //会话类型(0:私聊 1:群聊 2:群发 3:应用 4:通知)
    String cdata;   //会话数据(只有应用消息会用到该属性)
    int msgNumber;  //消息标识(群聊批量接收和读取会用到)
    int senderMsgNumber;
    int status; //消息发送状态和接收状态
    int direction;  //消息是发出去的还是收到的
    int isRead; //消息是否已读(多设备同步时用)
    String groupId; //群组id(只有群聊中会用到该属性)
    String msgType; //消息类型
    int msgFlag;    //消息标识
    long createDate;    //消息创建时间(微秒级)
    String subject; //消息主题(主要是在会话页面中显示)
    String content; //消息内容
    String contentType; //消息内容类型
    String senderId;    //发送者id
    String senderName;  //发送者姓名
    String senderSsid;  //发送者ssid
    String receiverId;  //接收者id
    String receiverName;    //接受者姓名
    String attachment;  //附件信息
    String extData; //扩展数据
    String extType; //扩展数据类型
    String filePath;    //消息文件本地存储地址(记录发送出去的和已下载的文件路径)
    String extData1;    //扩展数据
    int fileStatus; //文件状态
    String receiverUsers; //群发的所有接受者信息
    int count;

消息相关数据库操作

/**
     * 删除表数据
     */
    QDMessageHelper.deleteTable()
    /**
     * 插入一个消息
     *
     * @param message
     */
    QDMessageHelper.insertMessage(QDMessage message)
    /**
     * 插入一组消息
     *
     * @param messages
     */
    QDMessageHelper.insertMessageList(List<QDMessage> messages)
    /**
     * 获取和某人的聊天消息
     *
     * @param userId 聊天对象id
     * @return List<QDMessage>
     */
     QDMessageHelper.getMessageWithUserId(String userId)
    /**
     * 获取和自己设备的聊天消息
     * @param userId 登陆者id
     * @return List<QDMessage>
     */
   QDMessageHelper.getMessageWithSelfId(String userId) 
/**
     * 获取和某人time之前的limit条消息
     * @param userId 聊天对象id
     * @param time 时间(毫秒)
     * @param limit 条数
     * @return List<QDMessage> 
     */
   QDMessageHelper.getMessageLimitWithUserIdBeforeTime(String userId, long time, int limit)
    /**
     * 获取和默认time之后的limit条消息
     * @param userId 聊天对象id
     * @param time 时间(毫秒)
     * @param limit 条数
     * @return List<QDMessage> 
     */
    QDMessageHelper.getMessageLimitWithUserIdAfterTime(String userId, long time, int limit)
/**
     * 删除和某人的聊天消息
     *
     * @param userId 聊天对象id
     */
    QDMessageHelper.deleteMessageWithUserId(String userId) 
    /**
     * 删除和某个群的聊天
     *
     * @param groupId 群组id
     */
    QDMessageHelper.deleteMessageWithGroupId(String groupId) 
    /**
     * 删除某个应用的消息
     *
     * @param appId 应用id
     */
    QDMessageHelper.deleteMessageWithAppId(String appId) 
    /**
     * 获取和某人的图片集合
     *
     * @param userId 用户id
     * @return List<QDMessage>
     */
    QDMessageHelper.getImageListWithUserId(String userId) 
    /**
     * 获取某群的图片集合
     *
     * @param groupId
     * @return  List<QDMessage> 
     */
    QDMessageHelper.getImageListWithGroupId(String groupId) 
    /**
     * 获取某个群组的聊天消息
     *
     * @param groupId
     * @return  List<QDMessage> 
     */
    QDMessageHelper.getMessageWithGroupId(String groupId) 
    /**
     * 返回某个群组固定的条数
     * @param groupId
     * @return  List<QDMessage> 
     */
    QDMessageHelper.getMessageLimitWithGroupId(String groupId)
    /**
     * 根据群组id获取time之前的limit条消息
     * @param groupId 群组id
     * @param time 时间(毫秒)
     * @param limit 条数
     * @return List<QDMessage>
     */
    QDMessageHelper.getMessageLimitWithGroupIdBeforeTime(String groupId, long time, int limit) 
    /**
     * 根据群组id获取time之后的limit条消息
     * @param groupId 群组id
     * @param time 时间(毫秒)
     * @param limit 条数
     * @return List<QDMessage>
     */
    QDMessageHelper.getMessageLimitWithGroupIdAfterTime(String groupId, long time, int limit)
    /**
     * 更新消息
     * @param message 消息对象
     */
     QDMessageHelper.updateMessage(QDMessage message)
    /**
     * 获取未读消息数量
     *
     * @return int 
     */
    QDMessageHelper.getUnreadMessageCount() 
    /**
     * 获取个人未读消息数量
     * @return int
     */
    QDMessageHelper.getPersonUnreadMessageCount() 
    /**
     * 获取群组未读消息数量
     */
    QDMessageHelper.getGroupUnreadMessageCount() 
    /**
     * 获取和某人的未读消息数量
     *
     * @param userId 用户id
     * @return int
     */
    QDMessageHelper.getUnreadMessageCountWithUserId(String userId) 
    /**
     * 获取和自己的设备的未读消息数量
     * @return int
     */
    QDMessageHelper.getUnreadMessageCountWithMyPc(String userId) 
    /**
     * 获取某群的未读消息数量
     *
     * @param groupId  群组id
     * @return int
     */
    QDMessageHelper.getUnreadMessageCountWithGroupId(String groupId) 
    /**
     * 获取应用的未读消息数量
     *
     * @param appId 应用id
     * @return int
     */
    QDMessageHelper.getUnreadMessageCountWithAppId(String appId)
    /**
     * 根据id获取消息
     *
     * @param msgId 消息id
     * @return QDMessage
     */
     QDMessageHelper.getMessageById(String msgId) 
    /**
     * 搜索个人消息
     *
     * @param userId 登陆登陆者id
     * @param searchText 搜索字符串
     * @return List<QDMessage>
     */
     QDMessageHelper.searchPersonalMessage(String userId, String searchText)
    /**
     * 搜索群组消息
     *
     * @param searchText 搜索字符串
     * @return List<QDMessage>
     */
    QDMessageHelper.searchGroupMessage(String searchText)
    /**
     * 搜索和某人的聊天记录
     *
     * @param chatId 用户id
     * @param searchText 搜索字符串
     * @return List<QDMessage> 
     */
    QDMessageHelper.searchMessageWithChatId(String chatId, String searchText) 
    /**
     * 搜索和某群的聊天记录
     *
     * @param groupId 群组id
     * @param searchText 搜索字符串
     * @return List<QDMessage> 
     */
    QDMessageHelper.searchMessageWithGroupId(String groupId, String searchText) 
    /**
     * 获取和某人的最后一条消息
     *
     * @param userId 用户id
     * @return QDMessage
     */
    QDMessageHelper.getLastMessageWithUserId(String userId) 
     /**
     * 获取和pc端的最后一条消息
     *
     * @param userId 登陆者id
     * @return QDMessage
     */
    QDMessageHelper.getLastMessageWithSelfId(String userId) 
    /**
     * 获取某个群组的最后一条聊天
     *
     * @param groupId  群组id
     * @return QDMessage
     */
   QDMessageHelper.getLastMessageWithGroupId(String groupId) 
     /**
     * 删除消息列表
     *
     * @param messageList 消息列表
     */
   QDMessageHelper.deleteMessageList(List<QDMessage> messageList) 
    /**
     * 删除消息列表
     *
     * @param idList 删除消息id列表 
     */
   QDMessageHelper.deleteMessageByIdList(List<String> idList) 
    /**
     * 删除消息
     *
     * @param msgId 消息id
     */
    QDMessageHelper.deleteMessageById(String msgId)
     /**
     * 获取文件消息
     * @return List<QDMessage>
     */
    QDMessageHelper.getFileMessage()