跳转至

聊天室

聊天室也是多人会话的一种类型,融云只负责建立并保持会话连接,开发者可通过 SDK 相关接口让用户加入或者退出聊天室。

提示

聊天室的 conversationTypeConversationType_CHATROOMtargetId 开发者在创建或者加入聊天室时自己指定的。

IMKit 中的会话页面 RCConversationViewController 已经内置了加入和退出聊天室的接口调用,您直接启动即可。

注意

  1. 聊天室成员不设用户上限。
  2. 用户退出聊天界面后即视为离开聊天室,不会再接收到任何聊天室中消息并清空本地消息记录,没有推送通知功能。
  3. 融云默认一个用户同时只能加入一个聊天室。
  4. 一个聊天室一个小时内没有人发送消息或者加入,聊天室会被自动销毁。

加入聊天室

IMKit 是在会话页面 viewDidLoad 的时候加入聊天室的, 加入聊天室的时候,默认会获取之前的 10 条聊天历史记录,开发者可以通过设置 RCConversationViewController 里面的 defaultHistoryMessageCountOfChatRoom 属性,来改变加入聊天室所需要获取的历史消息数量:

Int值 说明
-1 表示不获取任何历史消息
0 表示不特殊设置而使用 SDK 默认的设置(默认为获取10条)
0 < messageCount <= 50 具体获取的消息数量,最大值为50
/*!
 如果当前会话类型为聊天室时,进入聊天室所获取的历史消息数量,默认值为10。
 */
@property(nonatomic, assign) int defaultHistoryMessageCountOfChatRoom;

注意

  1. 需要在 viewDidLoad 之前进行设置。
  2. 如果是 7.x 系统获取历史消息数量不要大于 30

退出聊天室

会话页面在 leftBarButtonItemPressed 时会默认退出聊天室。开发者需要在会话界面退出时,父类调用一下 RCConversationViewControllerleftBarButtonItemPressed 方法。

自定义

需要自定义聊天室页面的,IMLibRCIMClient 里面有以下关于聊天室的操作方法:

加入聊天室

参数 类型 说明
targetId NSString 聊天室ID
messageCount int 进入聊天室时获取历史消息的数量,-1 <= messageCount 且 messageCount <= 50
successBlock void 加入聊天室成功的回调
errorBlock void 加入聊天室失败的回调
messageCount值 说明
-1 表示不获取任何历史消息
0 表示不特殊设置而使用 SDK 默认的设置(默认为获取10条)
0 < messageCount <= 50 具体获取的消息数量,最大值为50

注意

如果是 7.x 系统获取历史消息数量不要大于 30

使用 Kit 库的会话页面 viewDidLoad 会自动调用 joinChatRoom 加入聊天室(聊天室不存在会自动创建), 如果您只想加入已存在的聊天室,需要在 push 到会话页面之前调用这个方法并且 messageCount-1,成功之后 push 到会话页面,失败需要您做相应提示处理。

*/

/*!
 加入聊天室(如果聊天室不存在则会创建)
 */
- (void)joinChatRoom:(NSString *)targetId
        messageCount:(int)messageCount
             success:(void (^)())successBlock
               error:(void (^)(RCErrorCode status))errorBlock;

/*!
 加入已经存在的聊天室
 @warning 如果不存在或超限会返回聊天室不存在错误 23410 或 人数超限 23411)
 */
- (void)joinExistChatRoom:(NSString *)targetId
             messageCount:(int)messageCount
                  success:(void (^)())successBlock
                    error:(void (^)(RCErrorCode status))errorBlock;
退出聊天室

参数 类型 说明
targetId NSString 聊天室ID
successBlock void 退出聊天室成功的回调
errorBlock void 退出聊天室失败的回调

- (void)quitChatRoom:(NSString *)targetId
             success:(void (^)())successBlock
               error:(void (^)(RCErrorCode status))errorBlock;
获取聊天室的信息

注意

务必在加入聊天室后调用此方法。

参数 类型 说明
targetId NSString 聊天室ID
count int 需要获取的成员信息的数量
order RCChatRoomMemberOrder 需要获取的成员列表的顺序
successBlock void 获取成功的回调
errorBlock void 获取失败的回调
RCChatRoomMemberOrder 类型 说明
RC_ChatRoom_Member_Asc 升序方式查询,将返回最早加入的成员信息列表,按加入时间从旧到新排列
RC_ChatRoom_Member_Desc 降序方式查询,将返回最晚加入的成员信息列表,按加入时间从新到旧排列。

提示

目前获取到的聊天室信息中仅包含不多于 20 人的成员信息,即 0 <= count 且 count <= 20,传入0获取到的聊天室信息将或仅包含成员总数,不包含具体的成员列表

/*!
因为聊天室一般成员数量巨大,权衡效率和用户体验,目前返回的聊天室信息仅包含不多于20人的成员信息和当前成员总数。
*/
- (void)getChatRoomInfo:(NSString *)targetId
                  count:(int)count
                  order:(RCChatRoomMemberOrder)order
                success:(void (^)(RCChatRoomInfo *chatRoomInfo))successBlock
                  error:(void (^)(RCErrorCode status))errorBlock;