会话置顶
会话置顶功能提供以下能力:
- 在会话列表中置顶会话:通过会话(
RCConversation
)的置顶(isTop
)属性控制。 - 在携带同一标签的会话中置顶(需配合使用会话标签功能):通过 RCConversationTagInfo 类的
isTop
属性控制。 - 从 5.20.0 版本开始,支持超级群类型会话置顶,该功能需提交工单申请开通。
监听置顶状态同步
SDK 提供了会话状态(置顶状态数据和免打扰状态数据)同步机制。设置会话状态同步监听器后,如果会话状态改变,可在本端收到通知。
会话的置顶和免打扰状态数据同步后,触发 ConversationStatusListener
的 onStatusChanged
方法。详细说明可参见多端同步免打扰/置顶。
在会话列表中置顶会话
您在设置指定会话在会话列表中置顶后,IMLib SDK 将修改 RCConversation 的 isTop
字段,该状态将会被同步到服务端。融云会在为用户自动同步会话置顶的状态数据。客户端可以主动获取或通过监听器获取到最新数据。
提示
- 从 5.3.0 版本开始,建议使用异步返回结果的接口,原同步接口同时废弃。
设置会话置顶
使用 setConversationToTop:targetId:isTop:completion: 设置会话置顶。
接口原型
Objective C
- (void)setConversationToTop:(RCConversationType)conversationType
targetId:(NSString *)targetId
isTop:(BOOL)isTop
completion:(nullable void(^)(BOOL ret))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,支持单聊、群聊、系统会话。 |
targetId | NSString | 会话 id |
isTop | BOOL | 是否置顶 |
completion | Block | 设置置顶结果回调 |
示例代码
Objective C
// 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) {}];
客户端通过本地消息数据自动生成会话与会话列表,并会在用户登录的多个设备之间同步置顶状态。如果在调用该 API 时,要置顶的会话在本地或该用户登录的其他设备上不存在(会话尚未生成,或者已被移除),SDK 将直接创建会话并置顶。
设置会话置顶可选择是否更新会话时间
您可以使用 [setConversationToTop:targetId:isTop:needUpdateTime:completion:] 设置会话置顶控制是否更新会话时间。
接口原型
Objective C
- (void)setConversationToTop:(RCConversationType)conversationType
targetId:(NSString *)targetId
isTop:(BOOL)isTop
needUpdateTime:(BOOL)needUpdateTime
completion:(nullable void(^)(BOOL result))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,支持单聊、群聊、系统、超级群会话。 |
targetId | NSString | 会话 id |
isTop | BOOL | 是否置顶 |
needUpdateTime | BOOL | 是否会话更新时间 |
completion | Block | 设置置顶结果回调 |
示例代码
Objective C
// 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) {}];
参数 | 类型 | 说明 |
---|---|---|
conversationType | RCConversationType | 会话类型,支持单聊、群聊、系统、超级群会话。 |
targetId | NSString | 会话 id |
isTop | BOOL | 是否置顶 |
needUpdateTime | BOOL | 是否更新时间 |
completion | Block | 设置置顶结果回调 |
客户端通过本地消息数据自动生成会话与会话列表,并会在用户登录的多个设备之间同步置顶状态。如果在调用该 API 时,要置顶的会话在本地或该用户登录的其他设备上不存在(会话尚未生成,或者已被移除),SDK 将直接创建会话并置顶。
批量设置会话置顶
使用 setConversationsToTop:isTop:option:completion:
接口,批量设置会话置顶。
Objective C
RCConversationIdentifier *identifier = [[RCConversationIdentifier alloc] init];
identifier.type = ConversationType_GROUP;
identifier.targetId = @"tId";
RCConversationTopOption *option = [[RCConversationTopOption alloc] init];
option.needCreateConversation = YES;
option.needUpdateTime = YES;
[[RCCoreClient sharedCoreClient] setConversationsToTop:@[identifier]
isTop:YES
option:option
completion:^(RCErrorCode code) {
// set conversation top
}];
参数 | 类型 | 说明 |
---|---|---|
conversationIdentifiers | RCConversationIdentifier | 会话标识列表。 |
isTop | BOOL | 是否置顶 |
option | RCConversationTopOption | 配置信息,支持设置是否更新时间和是否创建会话 |
completion | Block | 设置置顶结果回调 |
获取是否置顶
提示
- 从 5.1.5 版本开始支持该功能。
您可以主动获取指定会话的置顶状态。
接口原型
Objective C
- (void)getConversationTopStatus:(RCConversationIdentifier *)conversationIdentifier
completion:(nullable void(^)(BOOL ret))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationIdentifier | RCConversationIdentifier | 会话标识,需要指定会话类型(RCConversationType)和 Target ID。 |
completion | Block | 返回是否设置成功。 |
示例代码
Objective C
RCConversationIdentifier *iden = [[RCConversationIdentifier alloc] initWithConversationIdentifier:ConversationType_PRIVATE targetId:@"targetId"];
[[RCCoreClient sharedCoreClient] getConversationTopStatus:iden completion:^(BOOL){
//异步回调,是否获取成功
}];
### 获取置顶会话列表
您可以主动获取指定会话类型的所有置顶会话。
#### 接口原型
```objectivec
- (void)getTopConversationList:(NSArray<NSNumber *> *)conversationTypeList
completion:(nullable void(^)(NSArray<RCConversation *> *_Nullable conversationList))completion;
参数说明
参数 | 类型 | 说明 |
---|---|---|
conversationTypes | NSArray | 会话类型的数组,需要将 RCConversationType 转为 NSNumber 构建 Array |
completion | Block | 获取成功后,返回会话 RCConversation 的列表。 |
示例代码
Objective C
[[RCCoreClient sharedCoreClient] getTopConversationList:@[@(ConversationType_PRIVATE)]
completion:^(NSArray<RCConversation *> *conversationList) {
}];