跳到主要内容

清除消息未读状态

超级群业务可以在多个客户端之间同步消息阅读状态。

同步消息已读状态

调用同步已读状态接口会同时清除本地与服务端记录的消息的未读状态,同时服务端会将最新状态同步给同一用户账号的其他客户端。

  • 如果指定了频道 ID(channelId),则标记该频道所有消息为全部已读,并同步其他客户端。
  • 如果频道 ID 为空,则标记该超级群会话下所有不属于任何频道的消息为全部已读,并同步其他客户端。
提示

超级群暂不支持按时间戳同步已读状态。调用 syncUltraGroupReadStatus 会按指定参数的要求标记全部消息为已读。时间戳参数(timestamp)无效,可传入任意数字。

接口原型

Objective C
- (void)syncUltraGroupReadStatus:(NSString *)targetId
channelId:(NSString *)channelId
time:(long long)timestamp
success:(void (^)(void))successBlock
error:(void (^)(RCErrorCode errorCode))errorBlock

参数说明

参数类型说明
targetIdNSString超级群会话 targetId。
channelIdNSString超级群会话频道 channelId。
timestamplong long该字段无效,可传入任意数字。
successBlockBlock同步消息已读状态成功的回调。
errorCodeBlock同步消息已读状态失败的回调

示例代码

Objective C
[[RCChannelClient sharedChannelManager] syncUltraGroupReadStatus:@"targetId" channelId:@"channelId" time:0 success:^{

} error:^(RCErrorCode errorCode) {

}];

监听消息已读时间

您可以通过设置 setRCUltraGroupReadTimeDelegate 代理来监听超级群已读同步的通知:

  1. 在初始化 IMLib SDK 后,连接 IM 之前设置消息已读状态同步代理:
Objective C
[[RCChannelClient sharedChannelManager] setRCUltraGroupReadTimeDelegate:self];
  1. 实现监听消息已读时间的方法监听其他端的已读事件:
Objective C
/**
超级群已读时间同步

@param targetId 会话 ID
@param channelId 频道 ID
@param readTime 已读时间(服务端将未读数清零的时间)
*/
- (void)onUltraGroupReadTimeReceived:(NSString *)targetId channelId:(NSString *)channelId readTime:(long long)readTime {

}

清空未读数时机

建议您在以下时机在会话页面清除未读数:

  • 会话页面即将消失时(viewWillDisappear)
  • 处于会话页面,App 返回前台时
  • 已经加载到最新消息时
提示

当调用 syncUltraGroupReadStatus 成功后,客户端本地 ConversationfirstUnreadMsgSendTime 会变为 0。服务端保存的第一条未读时间会变为 0,保存的未读 @ 消息摘要列表也会清零.