跳到主要内容

会话置顶

会话置顶功能提供以下能力:

  • 在会话列表中置顶会话:通过会话(RCConversation)的置顶(isTop)属性控制。
  • 在携带同一标签的会话中置顶(需配合使用会话标签功能):通过 RCConversationTagInfo 类的 isTop 属性控制。

在会话列表中置顶会话

设置指定会话在会话列表中置顶后,SDK 将修改 RCConversationisTop 字段,该状态将会被同步到服务端。融云会在为用户自动同步会话置顶的状态数据。客户端可以主动获取或通过监听器获取到最新数据。

设置会话置顶

使用 setConversationToTop:targetId:isTop:completion: 设置会话置顶。

// Set the conversation type and target ID
RCConversationType conversationType = ConversationType_PRIVATE;
NSString *targetId = @"your_target_id";

// Set the conversation to top or not
BOOL isTop = YES;

[[RCCoreClient sharedCoreClient] setConversationToTop:conversationType
targetId:targetId
isTop:isTop
completion:^(BOOL success) {}];
参数类型说明
conversationTypeRCConversationType会话类型,支持单聊、群聊、系统会话。
targetIdNSString会话 id
isTopBOOL是否置顶
completionBlock设置置顶结果回调

客户端通过本地消息数据自动生成会话与会话列表,并会在用户登录的多个设备之间同步置顶状态。如果在调用该 API 时,要置顶的会话在本地或该用户登录的其他设备上不存在(会话尚未生成,或者已被移除),SDK SDK 将直接创建会话并置顶。

设置会话置顶可选择是否更新会话时间

使用 [setConversationToTop:targetId:isTop:needUpdateTime:completion:] 设置会话置顶。

// Set the conversation type and target ID
RCConversationType conversationType = ConversationType_PRIVATE;
NSString *targetId = @"your_target_id";

// Set the conversation to top or not
BOOL isTop = YES;

[[RCCoreClient sharedCoreClient] setConversationToTop:conversationType
targetId:targetId
isTop:isTop
needUpdateTime:YES
completion:^(BOOL success) {}];
参数类型说明
conversationTypeRCConversationType会话类型,支持单聊、群聊、系统会话。
targetIdNSString会话 id
isTopBOOL是否置顶
needUpdateTimeBOOL是否更新时间
completionBlock设置置顶结果回调

客户端通过本地消息数据自动生成会话与会话列表,并会在用户登录的多个设备之间同步置顶状态。如果在调用该 API 时,要置顶的会话在本地或该用户登录的其他设备上不存在(会话尚未生成,或者已被移除),SDK 将直接创建会话并置顶。

获取是否置顶

提示
  • 从 5.1.5 版本开始支持该功能。
  • 从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

主动获取指定会话的置顶状态。

RCConversationIdentifier *iden = [[RCConversationIdentifier alloc] initWithConversationIdentifier:ConversationType_PRIVATE targetId:@"targetId"];
[[RCCoreClient sharedCoreClient] getConversationTopStatus:iden completion:^(BOOL){
//异步回调,是否获取成功
}];
参数类型说明
conversationIdentifierRCConversationIdentifier会话标识,需要指定会话类型(RCConversationType)和 Target ID。
completionBlock返回是否设置成功。

获取置顶会话列表

主动获取指定会话类型的所有置顶会话。

NSArray *conversations = [[RCIMClient sharedRCIMClient] getTopConversationList:@[@(ConversationType_PRIVATE),@(ConversationType_GROUP)]];
参数类型说明
conversationTypesNSArray会话类型的数组,需要将 RCConversationType 转为 NSNumber 构建 Array

获取成功后,返回 会话 RCConversation 的列表。

在携带标签的所有会话中置顶会话

提示

该功能相关接口仅在 RCCoreClient 中提供。在标签标记的所有会话中置顶是通过修改 RCConversationTagInfo.isTop 字段实现的,不影响 RCConversationisTop 字段。

如果 App 实现了会话标签功能,App 用户可能会使用同一个标签标记多个会话,并且需要将其中一个会话置顶。SDK 在 RCConversationTagInfo 中提供 isTop 字段,用于控制会话在携带同样标签的会话中的置顶状态。

在标签下置顶会话

在携带指定标签的所有会话中设置指定会话置顶。例如,在所有添加了「培训班」标签的会话中将与「Tom」的私聊会话置顶。

NSString targetId = @"useridoftom";
NSString *tagId = @"peixunban";
RCConversationIdentifier *iden = [[RCConversationIdentifier alloc] initWithConversationIdentifier:ConversationType_PRIVATE targetId:targetId];

[[RCCoreClient sharedCoreClient] setConversationToTopInTag:tagId conversationIdentifier:iden isTop:isTop success:^{

} error:^(RCErrorCode errorCode) {

}];
参数类型说明
tagIdString标签 ID
conversationIdentifierRCConversationIdentifier会话标识,需要指定会话类型(RCConversationType)和 Target ID。
isTopBOOL是否置顶
successBlockBlock成功回调
errorBlockBlock失败回调。errorCode 参数返回 RCErrorCode

获取会话在标签下的置顶状态

提示

从 5.3.0 版本 RCCoreClient 开始,建议使用下方异步返回结果的接口,原同步接口同时废弃。

查询指定会话是否在携带同一标签的所有会话中置顶。获取成功后会返回是否已置顶。

RCConversationIdentifier *iden = [[RCConversationIdentifier alloc] initWithConversationIdentifier:ConversationType_PRIVATE targetId:@"targetId"];

[[RCCoreClient sharedCoreClient] getConversationTopStatusInTag:iden tagId:@"tagId" completion:^(BOOL){
// 异步回调,返回置顶状态
}];
参数类型说明
tagIdNSString标签 ID
conversationIdentifierRCConversationIdentifier会话标识,需要指定会话类型(RCConversationType)和 Target ID。
completionBlock异步回调,返回是否置顶

是否开启同步空置顶会话(SDK 版本 ≧ 5.10.0)

卸载重装或者换设备登录后,置顶状态的会话会在会话列表中显示,包括已置顶的空会话。

从 5.10.0 版本开始,支持是否开启同步空置顶会话功能。

可在 SDK 初始化时通过 RCInitOptionenableSyncEmptyTopConversation 属性设置是否开启。如不设置,SDK 默认不自动同步空置顶会话。

注意 如果开启同步空置顶会话功能,那么分页获取会话数据时,第一页 startTime 传 0,后续传会话对象 operationTime 的值。

RCInitOption *initOption = [[RCInitOption alloc] init];
// 打开同步空置顶会话
initOption.enableSyncEmptyTopConversation = YES;
// 初始化 SDK
[[RCCoreClient sharedCoreClient] initWithAppKey:@"your_appkey" option:initOption];