更新时间: 2021-03-08

# 功能描述

开发者可使用此功能实现消息已读未读功能的展示。

当 A 给 B 发送了一条消息,B 在未阅读之前 A 用户显示未读,当 B 用户阅读并调用发送回执接口之后,A 用户可在监听回执中收到通知,此时可根据对应的数据内容将发送的消息显示为已读。

# 发送回执

当收到一条消息时,可以通过以下方法发送一条回执给发送方。

# 参数说明

输入参数说明

参数 类型 必填 说明
conversationType RCConversationType (opens new window) 会话类型,单聊传入 ConversationType_PRIVATE
targetId NSString 消息发送方的 userId
timestamp long long 可配置的参数
successBlock Block 发送成功的回调
errorBlock Block 发送失败的回调

返回参数说明

error 说明:

回调参数 回调类型 说明
status RCErrorCode 发送失败的错误码
# 代码示例
[[RCIMClient sharedRCIMClient] sendReadReceiptMessage:ConversationType_PRIVATE
                                             targetId:@"targetId"
                                                 time:sentTime
                                              success:nil
                                                error:nil];
已复制
1
2
3
4
5

# 接收回执

收到消息已读回执之后,IMLib 会分发一个名为 RCLibDispatchReadReceiptNotification 的通知,开发者收到这个消息之后可以更新这个会话中 messageTime 以前的消息 UI 为已读(底层数据库消息状态已经改为已读)。

# 参数说明

Notification 的 object 为 nil,userInfo 为 NSDictionary 对象。

NSDictionary 对象的 key 值说明:

key值 类型 说明
cType NSNumber 会话类型
messageTime NSNumber 已阅读的最后一条消息的sendTime
tId NSString A 的 targetID
fId NSString B 的 targetId
# 代码示例
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(didReceiveReadReceiptNotification:)
                                             name:RCLibDispatchReadReceiptNotification
                                           object:nil];
已复制
1
2
3
4
- (void)didReceiveReadReceiptNotification:(NSNotification *)notification {

    RCConversationType conversationType = (RCConversationType)[notification.userInfo[@"cType"] integerValue];
    long long readTime = [notification.userInfo[@"messageTime"] longLongValue];
    NSString *targetId = notification.userInfo[@"tId"];
    NSString *senderUserId = notification.userInfo[@"fId"];
}
已复制
1
2
3
4
5
6
7

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助