消息
创建消息
创建文本消息
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)
创建位置消息
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)
创建文件消息
注:当发送文件消息、小视频和语音消息之前 首先需要先上传文件
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)
创建语音消息
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)
创建视频消息(小视频)
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)
创建自定义消息
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)
发送消息
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()
发送命令消息
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
String cid;
int ctype;
String msgId;
int msgNum;
String type;
String subject;
int flag;
String senderAccount;
String senderName;
String senderInfo;
String text;
String extData;
String content;
String fileInfo;
String filePath;
String thumbPath;
int status;
int fileStatus;
String receiverAccount;
String receiverName;
long createTime;
int direction;
int isRead;
String extData1;
String groupId;