聊天室


环信聊天室模型支持最大成员数为5000,和群组不同,聊天室内成员离线后,服务器当监听到此成员不在线后不再会给此成员再发推送。

  • 支持最大成员5000;
  • 环信的聊天室内有所有者,管理员和游客三种身份;
  • 支持禁言,黑名单,踢人等操作;
  • 不支持客户端邀请;
  • 不支持 REST 邀请。
  • 聊天室API通常是同步操作,需要在单独的线程中执行,如需使用异步API,请使用async前缀对应的API

获取聊天室

/*!
 @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;

上一页:群组管理

下一页:实时通话