消息
<h2>接口</h2>
<h3>创建消息</h3>
<pre><code class="language-java">/**
* 创建文本消息
* @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)</code></pre>
<h3>消息指令</h3>
<pre><code class="language-java">/**
* 发送消息
* @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)</code></pre>
<h2>QDMessage 类</h2>
<pre><code class="language-java">消息状态
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
</code></pre>
<h2>消息相关数据库操作</h2>
<pre><code class="language-java">
/**
* 插入一条消息
* @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)</code></pre>