消息

创建消息

创建文本消息

 /**
 * 创建个人文本消息
 * @param chatId 聊天对象Id或群组Id 后文皆是如此
 * @param chatName 聊天对象名称或群组名称 后文皆是如此
 * @param content 文本内容 后文皆是如此
 * @return
 */
QDMessage message = QDClient.getInstance().createTextMessage(String chatId, String chatName, String content)
//创建群组文本消息
QDMessage message = QDClient.getInstance().createGTextMessage(String chatId, String chatName, String content)

创建@消息

QDMessage message = QDClient.getInstance().createGAtMessage(String chatId, String chatName, String content, QDAtClickSpan[] spans)

创建位置消息

/**
* 创建个人位置信息
* @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) 
//创建群组位置消息
QDMessage message = QDClient.getInstance().createGLocationMessage(String chatId, String chatName, double latitude, double longitude, String title, String address, String subject)

创建文件消息

注:当发送文件消息、小视频和语音消息之前 首先需要先上传文件

/**
* 创建个人文件消息
* @param chatId
* @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)
//创建群组文件消息
QDMessage message = QDClient.getInstance().createGFileMessage(String chatId, String chatName, String msgType, String subject, String path)

创建语音消息

//创建个人语音消息  duration为时长
QDMessage message = QDClient.getInstance().createAudioMessage(String chatId, String chatName, String subject, String path, long duration)
//创建群组语音消息
QDMessage message = QDClient.getInstance().createGAudioMessage(String chatId, String chatName, String subject, String path, long duration)

创建视频消息(小视频)

//创建个人视频消息 thumbPath为小视频第一帧图片路径
QDMessage message = QDClient.getInstance().createVideoMessage(String chatId, String chatName, String subject, String path, String thumbPath, long duration)
//创建群组视频消息
QDMessage message = QDClient.getInstance().createGVideoMessage(String chatId, String chatName, String subject, String path, String thumbPath, long duration)

创建自定义消息

//extData 自定义消息的格式, subject 标题
QDMessage message = QDClient.getInstance().createCustomMessage(String chatId, String chatName, String extData, String subject)
//创建自定义消息
QDMessage message = QDClient.getInstance().createGCustomMessage(String chatId, String chatName, String extData, String subject)

发送消息

//发送个人消息 QDResultCallBack 全局的操作监听
QDClient.getInstance().sendMessage(QDMessage message, QDResultCallBack callBack)
//发送群组消息
QDClient.getInstance().sendGMessage(QDMessage message, QDResultCallBack callBack)

重发消息

QDClient.getInstance().resendMessage(QDMessage message, QDResultCallBack callBack)

设置消息已读

//如果一个会话中有多条消息未读,只需传入最后一条消息对象即可
QDClient.getInstance().setMsgRead(QDMessage message)
//设置群消息已读
QDClient.getInstance().setGMsgRead(QDMessage message)

获取离线消息

//包括个人和群组离线消息 离线消息走正常的消息接收方法
QDClient.getInstance().fetchOfflineMessage()

发送命令消息

// 命令消息只支持个人 opType为命令类型 命令消息不保存
QDClient.getInstance().setCmdMessage(String chatId, String chatName, String opType)

撤回消息

//包含个人和群组
QDClient.getInstance().revokeMessage(QDMessage message, QDResultCallBack callBack)

转发消息

// isGroup 是否是群组
QDClient.getInstance().forwardMessage(String chatId, String chatName, boolean isGroup, QDMessage message, QDResultCallBack callBack)

接收消息

 QDMessageCallBackManager.getInstance().addCallBack(this);

 QDMessageCallBack callBack = new QDMessageCallBack() {
   @Override
    public void onReceiveMsg(List<QDMessage> msgList, String chatId) {
        //收到消息  msgList消息列表 chatId 用户id或群组id
    }

    @Override
    public void onMessageRead(String account, int msgNum) {
        //消息已读 account 用户id msgNum 消息标识,小于这个值的未读消息全部标志为已读
    }

    @Override
    public void onCmdMessageRead(String cmdType, String chatId) {
        //收到命令消息 cmdType 命令类型 chatId 用户id
    }

    @Override
    public void onMessageCanceled(String chatAccount, String msgId) {
        //消息撤回通知 chatAccount 用户获群组id msgId 撤回的消息id
    }
}

 }

数据库操作

/**
* 插入一条消息
* @param message
*/
QDMessageDao.insertMessage(QDMessage message) 

/**
* 插入一组消息
* @param messageList
*/
QDMessageDao.insertMessageList(List<QDMessage> messageList)

/**
* 获取和某人的聊天
* @param account
* @return
*/
List<QDMessage> msgList = QDMessageDao.getMessagesByAccount(String account)

/**
* 获取某群的聊天
* @param groupId
* @return
*/
List<QDMessage> msgList = QDMessageDao.getMessagesByGroupId(String groupId)
/**
* 获取和某人的未读消息数量
* @param account
* @return
*/
int count = QDMessageDao.getUnreadCountByAccount(String account)
/**
* 根据群组id获取群组未读消息数量
* @param groupId
* @return
*/
int count = QDMessageDao.getUnreadCountByGroupId(String groupId)
/**
* 设置和某人的消息已读
* @param account
*/
QDMessageDao.setMessageReadByAccount(String account) 
/**
* 设置群组消息已读
* @param groupId
*/
QDMessageDao.setMessageReadByGroupId(String groupId)
/**
* 设置和某人小于msgNum的未读消息已读
* @param account
* @param msgNum
*/
QDMessageDao.setMessageSendAckLessNum(String account, int msgNum)
/**
* 获取路径不为空的文件消息
* @return
*/
List<QDMessage> msgList = QDMessageDao.getExistFileMessages()
/**
* 更新消息
* @param message
*/
QDMessageDao.updateMessage(QDMessage message)
/**
* 删除和某人的消息
* @param account
*/
QDMessageDao.deleteMessageByAccount(String account)
/**
* 删除某群的消息
* @param groupId
*/
QDMessageDao.deleteMessageByGroupId(String groupId)
/**
* 根据id删除消息
* @param msgId
*/
QDMessageDao.deleteMessageByMsgId(String msgId)
/**
* 将msgId的消息变为撤回消息
* @param msgId
*/
QDMessageDao.changeMessageRevoke(String msgId) 
/**
* 根据id获取message
* @param msgId
* @return
*/
QDMessage msg = QDMessageDao.getMessageByMsgId(String msgId) 
/**
* 搜索单聊记录
* @param searchTxt
* @return
*/
List<QDMessage> msgList = QDMessageDao.searchMessageBySelfAccount(String searchTxt)
/**
* 搜索群聊记录
* @param searchTxt
* @return
*/
List<QDMessage> msgList = QDMessageDao.searchGroupMessage(String searchTxt)
/**
* 搜索和某人的聊天记录
* @param account
* @param searchTxt
* @return
*/
List<QDMessage> msgList = QDMessageDao.searchMessageWithAccount(String account, String searchTxt)
/**
* 搜索某群的聊天记录
* @param groupId
* @param searchTxt
* @return
*/
List<QDMessage> msgList = QDMessageDao.searchMessageWithGroupId(String groupId, String searchTxt)
/**
* 获取time之后的个人消息
* @param account
* @param time
* @return
*/
List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithAccountAfterTime(String account, long time)

List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithAccountAfterTime(String account, long time, int size)
/**
* 获取time之前的个人消息
* @param account
* @param time
* @return
*/
List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithAccountBeforeTime(String account, long time) 

List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithAccountBeforeTime(String account, long time, int size)
/**
* 获取time之后的群组消息
* @param groupId
* @param time
* @return
*/
List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithGroupIdAfterTime(String groupId, long time) 

List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithGroupIdAfterTime(String groupId, long time, int size)
/**
* 获取time之前的群组消息
* @param groupId
* @param time
* @return
*/
List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithGroupIdBeforeTime(String groupId, long time) 
/**
* 获取time之前的群组消息
* @param groupId
* @param time
* @param size 分页条数
* @return
*/

List<QDMessage> msgList = QDMessageDao.loadMoreMessageWithGroupIdBeforeTime(String groupId, long time, int size)

QDMessage

//消息状态
QDMessage.MSG_STATUS_SENDING //正在发送
QDMessage.MSG_STATUS_SEND_OK //发送成功
QDMessage.MSG_STATUS_SEND_FAILED //发送失败
QDMessage.MSG_STATUS_READ_ACK //消息已读回执

//发送方向
QDMessage.DIRECTION_OUT //自己发送
QDMessage.DIRECTION_IN //接收

//是否已读
QDMessage.UNREAD //未读
QDMessage.READ //已读

//消息文件状态
QDMessage.MSG_FILE_STATUS_UPLOADING  //文件正在上传
QDMessage.MSG_FILE_STATUS_UPLOADED  //文件上传成功
QDMessage.MSG_FILE_STATUS_UPLOAD_FAILED //文件上传失败
QDMessage.MSG_FILE_STATUS_UNDOWNLOAD //文件还没有下载
QDMessage.MSG_FILE_STATUS_DOWNLOADED  //文件下载成功
QDMessage.MSG_FILE_STATUS_DOWNLOAD_FAILED //文件下载失败

//消息类型
QDMessage.MSG_TYPE_TEXT// 文本消息
QDMessage.MSG_TYPE_IMAGE   // 图片
QDMessage.MSG_TYPE_FILE  // 文件
QDMessage.MSG_TYPE_LOCATION   // 位置
QDMessage.MSG_TYPE_VOICE    //语音消息
QDMessage.MSG_TYPE_SHOOT     //小视频
QDMessage.MSG_TYPE_NOTIFY  // 个人通知
QDMessage.MSG_TYPE_CANCEL  // 撤回消息

//会话类型
QDMessage.CTYPE_USER //单聊会话
QDMessage.CTYPE_GROUP //群组会话

/**
* 会话id
*/
String cid;
/**
* 会话类型
*/
int ctype;
/**
* 消息Id
*/
String msgId;
/**
* 消息num
*/
int msgNum;
/**
* 消息类型
*/
String type;
/**
* 消息标题
*/
String subject;
/**
* 消息标识
*/
int flag;
/**
* 消息发送者账号
*/
String senderAccount;
/**
* 消息发送者民粹
*/
String senderName;
/**
* 消息发送者信息
*/
String senderInfo;
/**
* 文本消息内容
*/
String text;
/**
* 额外数据
*/
String extData;
/**
* 消息内容 json字符串
*/
String content;
/**
* 文件数据 json字符串
*/
String fileInfo;
/**
* 文件本地路径
*/
String filePath;
/**
* 视频文件第一帧路径
*/
String thumbPath;
/**
* 消息状态
*/
int status;
/**
* 文件状态
*/
int fileStatus;
/**
* 消息接收者账号
*/
String receiverAccount;
/**
* 消息接收者名称
*/
String receiverName;
/**
* 消息创建时间(服务器时间)
*/
long createTime;
/**
* 消息方向
*/
int direction;
/**
* 是否已读
*/
int isRead;
/**
* 额外数据
*/
String extData1;
/**
* 群组id
*/
String groupId;

results matching ""

    No results matching ""