我在我的一篇博文里面也详细介绍了自定义融云的会话列表,没看过的小伙伴可以点击进去看看;
[置顶] iOS-OC-自定义融云会话列表(自定义cell)
这里面我主要介绍在我们自定义的会话列表里面如何设置群组cell的头像和昵称,即ConversationType_GROUP类型的会话,像其他的讨论组或者聊天室这里就不说明了,照着胡咯画瓢,很多小伙伴在看融云官网的api文档或者视频的时候,里面有详细介绍设置个人信息的头像和昵称,但是当我们的会话列表里面有群组的时候,发现那个设置方法是不能够的,其实设置群组是单独的方法。
代理
先要设置群组的信息代理RCIMGroupInfoDataSource
[[RCIM sharedRCIM] setGroupInfoDataSource:self];
会话类型
设置你想要显示的会话类型,这里面当然包括ConversationType_GROUP
//设置需要显示哪些类型的会话 [self setDisplayConversationTypes:@[@(ConversationType_PRIVATE),@(ConversationType_DISCUSSION),@(ConversationType_CHATROOM),@(ConversationType_GROUP),@(ConversationType_APPSERVICE),@(ConversationType_SYSTEM)]];
代理方法
/*! 群组信息提供者 @discussion SDK需要通过您实现的群组信息提供者,获取群组信息并显示。 */ @protocol RCIMGroupInfoDataSource <NSObject> /*! 获取群组信息 @param groupId 群组ID @param completion 获取群组信息完成之后需要执行的Block [groupInfo:该群组ID对应的群组信息] @discussion SDK通过此方法获取用户信息并显示,请在completion的block中返回该用户ID对应的用户信息。 在您设置了用户信息提供者之后,SDK在需要显示用户信息的时候,会调用此方法,向您请求用户信息用于显示。 */ - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *groupInfo))completion; @end
群组的数据类型是RCGroup,我这里面举了一个列子:
- (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion{ if([groupId isEqualToString:@"123456"]){ RCGroup *group = [[RCGroup alloc]init]; group.groupId = groupId; group.groupName = @"张福杰的群"; group.portraitUri = @"http://7xpx8n.com1.z0.glb.clouddn.com/logo256.png"; return completion(group); } }我这里判断群组ID(groupId)如果是123456的话就给他设置groupId、groupName和portraitUri。
当然真正做的时候这里面要复杂的多,我们肯定有一个查询接口,通过这个接口我们把群组的groupId传过去,来获取groupName和portraitUri,这个数据我们肯定也要缓存到本地一下,具体设计看你的需求了。
示例效果