逐条消息已读功能
重要提示
逐条消息已读功能(消息已读 V5)支持对每条接收消息分别设置已读状态,支持单聊和群聊会话类型。
发送消息
如需支持已读回执,发送消息时需在 Message 对象中设置 needReceipt 为 true。
示例代码
Java
Message message = ...;
message.setNeedReceipt(true); // 设置为 true
RongCoreClient.getInstance().sendMessage(message, null, null, new IRongCoreCallback.ISendMessageCallback() {
/**
* 消息发送前回调,回调时消息已存储至数据库。
* @param message 已存库的消息体。
*/
@Override
public void onAttached(Message message) {
}
/**
* 消息发送成功。
* @param message 发送成功后的消息体。
*/
@Override
public void onSuccess(Message message) {
}
/**
* 消息发送失败。
* @param message 发送失败的消息体。
* @param errorCode 具体错误码。
*/
@Override
public void onError(Message message, IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
消息对象新增属性
| 参数 | 类型 | 说明 |
|---|---|---|
needReceipt | Boolean | 是否支持发送已读回执 |
sentReceipt | Boolean | 是否已发送已读回执 |
发送已读回执
消息接收方在阅读某条消息后,需主动向发送方发送已读回执。调用 sendReadReceiptResponseV5() 方法,需传入会话标识(identifier)和消息唯一 ID。
| 参数 | 类型 | 说明 |
|---|---|---|
identifier | ConversationIdentifier | 消息所属会话标识 |
messageUIds | List | 需发送已读回执的消息 UID 列表 |
callback | IRongCoreCallback.OperationCallback | 结果回调 |
示例代码
Java
ConversationIdentifier identifier = ConversationIdentifier.obtain(
Conversation.ConversationType.GROUP,
"targetId",
""
);
List<String> messageUIds = new ArrayList<>();
messageUIds.add("MessageUID");
RongCoreClient.getInstance().sendReadReceiptResponseV5(identifier, messageUIds, new IRongCoreCallback.OperationCallback() {
@Override
public void onSuccess() {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode coreErrorCode) {
}
});
接收已读回执回调
消息接收方发送已读回执后,消息发送方会收到回执回调。开发者可注册已读回执监听器 addMessageReadReceiptV5Listener(),实现 onMessageReceiptResponse() 方法以接收回执信息。
| 参数 | 类型 | 说明 |
|---|---|---|
| responses | List | 消息已读回执响应信息 ReadReceiptResponseV5 列表 |
示例代码
Java
RongCoreClient.getInstance().addMessageReadReceiptV5Listener(new IRongCoreListener.MessageReadReceiptV5Listener() {
@Override
public void onMessageReceiptResponse(List<ReadReceiptResponseV5> responses) {
}
});
获取消息已读回执信息
消息发送方可通过 getMessageReadReceiptInfoV5() 接口,传入会话标识(identifier)和消息 UID 查询对应消息的已读回执信息。
| 参数 | 类型 | 说明 |
|---|---|---|
identifier | ConversationIdentifier | 消息所属会话标识 |
messageUIds | List | 需查询的消息 UID 列表 |
callback | IRongCoreCallback.ResultCallback | 结果回调 |
结果回调中 ,infoV5s 为 ReadReceiptInfoV5 列表,ReadReceiptInfoV5 包含如下内容:
| 参数 | 类型 | 说明 |
|---|---|---|
messageUId | String | 消息 UID |
unreadCount | Int | 未读数 |
readCount | Int | 已读数 |
totalCount | Int | 总人数 |
示例代码
Java
ConversationIdentifier identifier = ConversationIdentifier.obtain(
Conversation.ConversationType.GROUP,
"targetId",
""
);
List<String> messageUIds = new ArrayList<>();
messageUIds.add("MessageUID");
RongCoreClient.getInstance().getMessageReadReceiptInfoV5(identifier, messageUIds, new IRongCoreCallback.ResultCallback<List<ReadReceiptInfoV5>>() {
@Override
public void onSuccess(List<ReadReceiptInfoV5> infoV5s) {
}
@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
}
});