消息

接口

创建消息

/**
     * 创建文本消息
     * @param account 用户id
     * @param chatName 用户姓名
     * @param content 文本内容
     * @return
     */
    QDMessage message = QDClient.getInstance().createTextMessage(String account, String chatName, String content)
/**
     * 创建合并转发消息
     * @param messageList 转发的消息列表
     * @param isGroup 是否为群组
     * @return
     */
    QDMessage message = QDClient.getInstance().createMergeMessage(List<QDMessage> messageList, boolean isGroup)
    /**
     * 创建密聊文本消息
     * @param account 用户id
     * @param chatName 用户姓名
     * @param content 文本内容
     * @return
     */
    QDMessage message = QDClient.getInstance().createSecretTextMessage(String account, String chatName, String content)
    /**
     * 创建签收消息
     * @param account 用户id
     * @param chatName 用户姓名
     * @param content 文本内容
     * @return
     */
    QDMessage message = QDClient.getInstance().createSignMessage(String account, String chatName, String content)
    /**
     * 创建确认签收消息
     * @param account 用户id
     * @param chatName 用户姓名
     * @param extData 额外数据
     * @return
     */
     QDMessage message = QDClient.getInstance().createConfirmedMessage(String account, String chatName, String extData)

     extData组装代码如下:
     JsonObject extData = new JsonObject();
                extData.addProperty("type", "msg_confirmed");
                extData.addProperty("style", "");
                JsonObject data = new JsonObject();
                data.addProperty("msgid", message.getMsgId()); //确认签收的消息id
                data.addProperty("sendermsgnum", message.getMsgNum()); //确认签收的消息序号
                extData.add("data", data);
                extData.toString()
     /**
     * 创建位置信息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param latitude 经度 
     * @param longitude 纬度
     * @param title 地址标题
     * @param address 地址详细地址
     * @param subject 会话显示标题
     * @return
     */
    QDMessage message = QDClient.getInstance().createLocationMessage(String chatId, String chatName, double latitude, double longitude, String title, String address, String subject)
    /**
     * 创建文件消息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param msgType 消息类型(QDMessage.MSG_TYPE_IMAGE 图片消息, QDMessage.MSG_TYPE_FILE 文件消息 下同)
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @return
     */
    QDMessage message = QDClient.getInstance().createFileMessage(String chatId, String chatName, String msgType, String subject, String path)
    /**
     * 创建密聊文件消息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param msgType 消息类型
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @return
     */
    QDMessage message = QDClient.getInstance().createSecretFileMessage(String chatId, String chatName, String msgType, String subject, String path)
    /**
     * 创建语音消息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @param duration 语音时长
     * @return
     */
    QDMessage message = QDClient.getInstance().createAudioMessage(String chatId, String chatName, String subject, String path, long duration)
    /**
     * 创建密聊语音消息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @param duration 语音时长
     * @return
     */
    QDMessage message = QDClient.getInstance().createSecretAudioMessage(String chatId, String chatName, String subject, String path, long duration)
    /**
     * 创建小视频消息
     * @param chatId 用户id
     * @param chatName 用户姓名
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @param thumbPath 视频显示图片本地地址
     * @param duration 视频时长
     * @return
     */
    QDMessage message = QDClient.getInstance().createVideoMessage(String chatId, String chatName, String subject, String path, String thumbPath, long duration)
    /**
     * 创建自定义消息
     * @param chatId 用户id
     * @param chatName 用户姓名
      * @param extData 自定义内容
     * @param subject 会话显示标题
     * @return
     */
    QDMessage message = QDClient.getInstance().createCustomMessage(String chatId, String chatName, String extData, String subject)
     /**
     * 创建群组文本消息
     * @param groupId 群组id
     * @param groupName 群组名称
     * @param content 文本内容
     * @return
     */
    QDMessage message = QDClient.getInstance().createGTextMessage(String groupId, String groupName, String content)
    /**
     * 创建群组文本消息(含有@消息)
     * @param groupId 群组id
     * @param groupName 群组名称
     * @param content 文本内容
     * @return
     */
    QDMessage message = QDClient.getInstance().createGAtMessage(String groupId, String groupName, String content, QDAtClickSpan[] spans)
    /**
    * @param color 显示颜色
    * @param id 人员id @所有人的时候为*
    * @param name 人员名称或者所有人
    * @param listener 点击@字体的监听
    **/
     QDAtClickSpan span = new QDAtClickSpan(int color, String id, String name);
     QDAtClickSpan span = new QDAtClickSpan(int color, String id, String name, OnAtClickListener listener);
     /**
     * 创建群位置信息
    * @param chatId 群组id
     * @param chatName 群组姓名
     * @param latitude 经度 
     * @param longitude 纬度
     * @param title 地址标题
     * @param address 地址详细地址
     * @param subject 会话显示标题
     * @return
     */
    QDMessage message = QDClient.getInstance().createGLocationMessage(String chatId, String chatName, double latitude, double longitude, String title, String address, String subject)
    /**
     * 创建群文件消息
     * @param chatId 群组id
     * @param chatName 群组姓名
     * @param msgType 消息类型
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @return
     */
    QDMessage message = QDClient.getInstance().createGFileMessage(String chatId, String chatName, String msgType, String subject, String path)
    /**
     * 创建群语音消息
     * @param chatId 群组id
     * @param chatName 群组姓名
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @param duration 语音时长
     * @return
     */
     QDMessage message = QDClient.getInstance().createGAudioMessage(String chatId, String chatName, String subject, String path, long duration)
     /**
     * 创建群小视频消息
     * @param chatId 群组id
     * @param chatName 群组姓名
     * @param subject 会话显示标题
     * @param path 文件本地路径
     * @param thumbPath 视频显示图片本地地址
     * @param duration 视频时长
     * @return
     */
    QDMessage message = QDClient.getInstance().createGVideoMessage(String chatId, String chatName, String subject, String path, String thumbPath, long duration)
    /**
     * 创建群自定义消息
     * @param chatId 用户id
     * @param chatName 用户姓名
      * @param extData 自定义内容
     * @param subject 会话显示标题
     * @return
     */
    QDMessage message = QDClient.getInstance().createGCustomMessage(String chatId, String chatName, String extData, String subject)

消息指令

/**
     * 发送消息
     * @param message 消息对象 下同
     * @param callBack 发送监听 下同
     */
    QDClient.getInstance().sendMessage(QDMessage message, new QDResultCallBack<QDResponseMSG>(){
            @Override
            public void onError(String errorMsg) {
                  //发送失败
            }

            @Override
            public void onSuccess(QDResponseMSG response) {
               //发送成功
            }
        })
    /**
     * 发送密聊消息
     * @param message
     * @param callBack
     */
    QDClient.getInstance().sendSecretMessage(QDMessage message, new QDResultCallBack<QDResponseMSG>(){
            @Override
            public void onError(String errorMsg) {
                  //发送失败
            }

            @Override
            public void onSuccess(QDResponseMSG response) {
               //发送成功
            }
        }) 
     /**
     * 发送群组消息
     * @param message
     * @param callBack
     */
     QDClient.getInstance().sendGMessage(QDMessage message, new QDResultCallBack<QDResponseGMSG>(){
            @Override
            public void onError(String errorMsg) {
                  //发送失败
            }

            @Override
            public void onSuccess(QDResponseGMSG response) {
               //发送成功
            }
        })
     /**
     * 设置消息已读
     * @param message 未读的最后一条消息 下同
     */
    QDClient.getInstance().setMsgRead(QDMessage message)
    /**
     * 设置群消息已读
     * @param message
     */
    QDClient.getInstance().setGMsgRead(QDMessage message)
    /**
     * 获取离线消息
     */
    QDClient.getInstance().fetchOfflineMessage()
    /**
     * 发送命令型消息
     * @param chatId 聊天对象id
     * @param chatName 聊天对象姓名
     * @param opType 命令类型
     */
    QDClient.getInstance().setCmdMessage(String chatId, String chatName, String opType)
    /**
     * 撤回消息
     * @param message 被撤回的消息
     */
    QDClient.getInstance().revokeMessage(QDMessage message, QDResultCallBack callBack)
    /**
     * 转发消息
     * @param chatId 转发对象id
     * @param chatName 转发对象名称
     * @param message 转发的消息
      * @param isGroup 是否为群组
     */
    QDMessage message = QDClient.getInstance().forwardMessage(String chatId, String chatName, boolean isGroup, QDMessage message)
    /**
     * 收藏消息
     * @param content
     * @param callBack
     */
    QDClient.getInstance().collectMessage(String content, QDResultCallBack callBack)
    /**
     * 获取收藏列表
     * @param callBack
     */
    QDClient.getInstance().getCollections(QDResultCallBack callBack)
    /**
     * 删除收藏消息
     * @param gid 收藏消息的gid
     * @param callBack
     */
    QDClient.getInstance().deleteCollection(String gid, QDResultCallBack callBack)
    /**
     * 销毁群组信息
     * @param message
     */
   QDClient.getInstance().dropGroupMessage(QDMessage message, QDResultCallBack callBack)
   /**
     * 获取群消息阅读状态
     * @param message
     * @param callBack
     */
    QDClient.getInstance().getMsgReadStatus(QDMessage message, QDResultCallBack callBack)
    /**
     * 群发消息
     * @param content
     */
    QDClient.getInstance().sendMuserMsg(String content)

QDMessage 类

消息状态
MSG_STATUS_SENDING  发送中
MSG_STATUS_SEND_OK 发送成功
MSG_STATUS_SEND_FAILED 发送失败
MSG_STATUS_READ_ACK 消息已读
MSG_STATUS_RECEIVE 消息已经接收

DIRECTION_OUT 自己发送
DIRECTION_IN 收到

UNREAD 未读
READ 已读

文件状态
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 下载失败

消息类型
MSG_TYPE_TEXT 文本
MSG_TYPE_IMAGE 图片
MSG_TYPE_FILE 文件
MSG_TYPE_LOCATION 位置
MSG_TYPE_VOICE 语音消息(录音)
MSG_TYPE_SHOOT 小视频
MSG_TYPE_NOTIFY 通知
MSG_TYPE_CANCEL 撤回消息
MSG_TYPE_CUSTOM 自定义消息
MSG_TYPE_FORMVIEW 签收消息
MSG_TYPE_CONFIRMED 确认签收消息
MSG_TYPE_NET_AUDIO 实时语音消息
MSG_TYPE_NET_VIDEO 实时视频消息
MSG_TYPE_MERGE_FORWARD 合并消息

/
**
* 消息id
*/
String msgId
/
**
* 序号
*/
String msgNum
/
**
* 类型
*/
String type
/
**
* 标题
*/
String subject
/
**
* 发送者id
*/
String senderAccount
/
**
* 发送者姓名
*/
String senderName
/
**
* 文本消息内容
*/
String text
/
**
* 自定义消息内容
*/
String extData
/
**
* 地址内容
*/
String content
/
**
* 文件内容
*/
String fileInfo
/
**
* 文件本地地址
*/
String filePath
/
**
* 缩略图本地地址
*/
String thumbPath
/
**
* 状态
*/
int status
/
**
* 文件状态
*/
int fileStatus
/
**
* 接受者id
*/
String receiverAccount
/
**
* 接受者姓名
*/
String receiverName
/
**
* 发送时间
*/
long createTime
/
**
* 消息方向(自己发的还是接收的)
*/
int direction
/
**
* 是否已读
*/
int isRead
/
**
* 群组id
*/
String groupId
/
**
* 群组名称
*/
String groupName
/
**
* 是否包含@自己
*/
int isAtSelf
/
**
* 引用消息id
*/
String sourceMsgId

消息相关数据库操作


    /**
     * 插入一条消息
     * @param message
     */
    QDMessageDao.getInstance().insertMessage(QDMessage message)
        /**
     * 插入一组消息
     * @param messageList
     */
    QDMessageDao.getInstance().insertMessageList(List<QDMessage> messageList)
        /**
     * 获取和某人的聊天
     * @param account 用户id
     * @return List<QDMessage>
     */
    QDMessageDao.getInstance().getMessagesByAccount(String account)
         /**
     * 获取和自己pc客户端聊天
     * @return List<QDMessage>
     */
    QDMessageDao.getInstance().getMessageBySelfPc()
        /**
     * 获取和默认的密聊消息
     * @param account 用户id
     * @return List<QDMessage>
     */
    QDMessageDao.getInstance().getSecretMessagesByAccount(String account) 
        /**
     * 获取某群的聊天
     * @param groupId 群组id
     * @return List<QDMessage>
     */
    QDMessageDao.getInstance().getMessagesByGroupId(String groupId)
    /**
     * 获取最后一条@自己的消息
     * @param groupId 群组id
     * @return QDMessage
     */
    QDMessageDao.getInstance().getLastUnreadAtSelfMessageByGroupId(String groupId)
    /**
     * 设置和某人的消息已读
     * @param account 用户id
     */
     QDMessageDao.getInstance().setMessageReadByAccount(String account) 
     /**
     * 设置群组消息已读
     * @param groupId 群组id
     */
     QDMessageDao.getInstance().setMessageReadByGroupId(String groupId)
     /**
     * 删除和某人的消息
     * @param account 用户id
     */
     QDMessageDao.getInstance().deleteMessageByAccount(String account)
     /**
     * 删除某群的消息
     * @param groupId 群组id
     */
     QDMessageDao.getInstance().deleteMessageByGroupId(String groupId)
     /**
     * 根据id删除消息
     * @param msgId 消息id
     */
     QDMessageDao.getInstance().deleteMessageByMsgId(String msgId)
     /**
     * 根据id列表删除消息
     * @param idList 消息id列表
     */
     QDMessageDao.getInstance().deleteMessageByMsgIdList(List<String> idList) 
     /**
     * 根据id获取message
     * @param msgId 消息id
     * @return QDMessage
     */
     QDMessageDao.getInstance().getMessageByMsgId(String msgId)
     /**
     * 搜索单聊记录
     * @param searchTxt 搜索字段
     * @return List<QDMessage>
     */
     QDMessageDao.getInstance().searchMessageBySelfAccount(String searchTxt)
     /**
     * 搜索群聊记录
     * @param searchTxt 搜索字段
     * @return List<QDMessage>
     */
    QDMessageDao.getInstance().searchGroupMessage(String searchTxt)
    /**
     * 搜索和某人的聊天记录
     * @param account 用户id
     * @param searchTxt 搜索字段
     * @return List<QDMessage>
     */
     QDMessageDao.getInstance().searchMessageWithAccount(String account, String searchTxt)
     /**
     * 搜索某群的聊天记录
     * @param groupId 群组id
     * @param searchTxt 搜索字段
     * @return List<QDMessage>
     */
     QDMessageDao.getInstance().searchMessageWithGroupId(String groupId, String searchTxt)