====== 聊天室 ====== ---- 环信聊天室模型支持最大成员数为5000,和群组不同,聊天室内成员离线后,服务器当监听到此成员不在线后不再会给此成员再发推送。 * 支持最大成员5000; * 环信的聊天室内有所有者,管理员和游客三种身份; * 支持禁言,黑名单,踢人等操作; * 不支持客户端邀请; * 不支持 REST 邀请。 * 聊天室API通常是同步操作,需要在单独的线程中执行,如需使用异步API,请使用async前缀对应的API ===== REST ===== [[start:100serverintegration:70chatroommgmt|通过 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; ---- 上一页:[[start:300iosclientintegration:70groupmgmt|群组管理]] 下一页:[[start:300iosclientintegration:100rtaudio|实时通话]]