聊天室
环信聊天室模型支持最大成员数为5000,和群组不同,聊天室内成员离线后,服务器当监听到此成员不在线后不再会给此成员再发推送。
- 支持最大成员5000;
- 环信的聊天室内有所有者,管理员和游客三种身份;
- 支持禁言,黑名单,踢人等操作;
- 不支持客户端邀请;
- 不支持 REST 邀请。
- 聊天室API通常是同步操作,需要在单独的线程中执行,如需使用异步API,请使用async前缀对应的API
REST
客户端
获取聊天室
/*!
@method
@brief 获取指定页码指定条数的聊天室
@param aPage 要获取第几页,从1开始
@param aPageSize 最多获取多少条
@param pError 出错信息
@return 获取的聊天室结果
@discussion
这是一个阻塞方法,用户应当在一个独立线程中执行此方法,用户可以连续调用此方法以获得所有聊天室
*/
- (EMPageResult *)fetchChatroomsFromServerWithPage:(NSInteger)aPage
pageSize:(NSInteger)aPageSize
error:(EMError **)pError;
/*!
@method
@brief 异步方法, 获取指定范围的聊天室
@param aPage 要获取第几页,从1开始
@param aPageSize 最多获取多少条
@param completion 完成回调,回调会在主线程调用
*/
- (void)asyncFetchChatroomsFromServerWithPage:(NSInteger)aPage
pageSize:(NSInteger)aPageSize
completion:(void (^)(EMPageResult *result, EMError *error))completion;
获取聊天室详情
/*!
@method
@brief 同步方法,获取聊天室信息
@param chatroomId 聊天室ID
@param pError 错误信息
@return 聊天室
*/
- (EMChatroom *)fetchChatroomInfo:(NSString *)chatroomId
error:(EMError **)pError;
/*!
@method
@brief 异步方法,获取聊天室信息
@param chatroomId 群组ID
@param completion 完成后的回调
@param aQueue 回调block时的线程
*/
- (void)asyncFetchChatroomInfo:(NSString *)chatroomId
completion:(void (^)(EMChatroom *group, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
获取成员
/*!
@method
@brief 同步方法,获取聊天室成员列表,执行后,range被更新,location指向下一个范围的起点(> 0),用户可以连续调用此方法以获得所有的成员
@param chatroomId 聊天室ID
@param range 获取成员的范围
@param pError 错误信息
@return 聊天室的成员列表
*/
- (NSArray *)fetchOccupantsForChatroom:(NSString *)chatroomId
inSliceRange:(NSRange *)range
error:(EMError **)pError;
/*!
@method
@brief 同步方法,获取聊天室成员列表
@param chatroomId 聊天室ID
@param completion 完成后的回调
@param aQueue 回调block时的线程
*/
- (void)asyncFetchOccupantsForChatroom:(NSString *)chatroomId
inSliceRange:(NSRange)range
completion:(void (^)(NSArray *occupantsList, NSRange nextSliceRange, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
加入聊天室
/*!
@method
@brief 加入一个聊天室
@param chatroomId 聊天室的ID
@param pError 错误信息
@result 所加入的聊天室
@discussion
这是一个阻塞方法,用户应当在一个独立线程中执行此方法
*/
- (EMChatroom *)joinChatroom:(NSString *)chatroomId
error:(EMError **)pError;
/*!
@method
@brief 异步方法,加入一个聊天室
@param chatroomId 聊天室的ID
@param completion 加入聊天室完成后的回调
@param aQueue 回调block时的线程
*/
- (void)asyncJoinChatroom:(NSString *)chatroomId
completion:(void (^)(EMChatroom *chatroom, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
离开聊天室
/*!
@method
@brief 退出聊天室
@param chatroomId 聊天室ID
@param pError 错误信息
@result 退出的聊天室,失败返回nil
@discussion
这是一个阻塞方法,用户应当在一个独立线程中执行此方法
*/
- (EMChatroom *)leaveChatroom:(NSString *)chatroomId
error:(EMError **)pError;
/*!
@method
@brief 异步方法,退出聊天室
@param chatroomId 聊天室ID
@param completion 退出聊天室完成后的回调
@param aQueue 回调block时的线程
*/
- (void)asyncLeaveChatroom:(NSString *)chatroomId
completion:(void (^)(EMChatroom *chatroom, EMError *error))completion
onQueue:(dispatch_queue_t)aQueue;
聊天室相关的回调
/*!
@method
@brief 有用户加入聊天室
@param chatroom 加入的聊天室
@param username 加入者名称
*/
- (void)chatroom:(EMChatroom *)chatroom occupantDidJoin:(NSString *)username;
/*!
@method
@brief 有用户离开聊天室
@param chatroom 离开的聊天室
@param username 离开者名称
*/
- (void)chatroom:(EMChatroom *)chatroom occupantDidLeave:(NSString *)username;
/*!
@method
@brief 被踢出聊天室
@param chatroom 被踢出的聊天室
*/
- (void)beKickedOutFromChatroom:(EMChatroom *)chatroom;
/*!
@method
@brief 收到加入聊天室的邀请
@param chatroomId 聊天室ID
@param username 邀请人名称
@param message 邀请信息
@discussion
*/
- (void)didReceiveChatroomInvitationFrom:(NSString *)chatroomId
inviter:(NSString *)username
message:(NSString *)message;