讨论

VHCIMClient是集成消息服务的类,提供IM功能、公告功能、答题功能,其他消息服务等。

一、主要类说明

1、VHCIMClient

VHCIMClient微吼消息服务类。该类定义了微吼聊天消息对象的获取、连接聊天服务等Api,并通过代理的方式转发收到的聊天消息。

此类是一个单例对象。

1.1 使用步骤

获取单例对象->连接聊天服务->实现消息监听

1.2 功能使用

讨论功能

1.2.1 获取聊天记录

/**
 @brief 获取number条聊天数据,异步函数
 @discussion 异步函数,结果通过block回调
 @param number 获取条数
 @param msgArray 获取成功回调
 @param failed 失败回调
 */
- (void)getLatestMsgWithNum:(NSUInteger)number
                 completion:(void(^)(NSArray <VHCMsg*> *result))msgArray
                     failed:(void(^)(VHCError *error))failed;

/**
 @brief 分页获取聊天数据,异步函数
 @param page 页数
 @param size 每页数据条数,每页最多可获取200条
 @param msgArray 获取成功回调
 @param failed 失败回调
 */
- (void)getChatMsgWithPageNum:(NSUInteger)page
                     pageSize:(NSUInteger)size
                   completion:(void(^)(NSArray <VHCMsg*> *result))msgArray
                       failed:(void(^)(VHCError *error))failed;

支持获取最近的N条聊天记录和分页获取。

1.2.2 发送消息

/**
 @brief 发送消息
 @warning 最长200字
 */
- (void)sendMsg:(NSString *)msg
        success:(void(^)(void))success
        failure:(void(^)(VHCError *error))failure;

1.2.3 接收消息

/**
 @brief 收到聊天消息
 */
- (void)imClient:(VHCIMClient *)client event:(NSString *)event message:(VHCMsg *)message;

1.2.4 言论状态监听回调

/**
 @brief 主播端禁止某用户发言回调
 @param isBan       YES:被禁言,NO:被取消禁言
 @param joinId      被禁言用户的参会id,全体禁言此id为空
 @warning    讲师端对某禁言/取消禁言,会回调此方法,首次进入聊天也会回调该状态。
 */
- (void)imClient:(VHCIMClient *)client banToChat:(BOOL)isBan withJoinId:(NSString *)joinId

答题功能

1、接收答题消息回调

 @brief 问卷消息回调
 */
- (void)imClient:(VHCIMClient *)client questionMsg:(VHCQuestion *)question;

收到问卷消息回调,处理问卷相关业务,微吼课堂的问卷功能。

2、提交问卷答案

/**
 @brief 提交问卷答案,异步函数
 @param quId 问题id
 @param answers 答案id数组
 */
- (void)commitAnswerWithQuestionId:(NSString *)quId
                            answer:(NSArray<__kindof NSString *> *)answers
                           success:(void(^)(void))success
                           failure:(void(^)(VHCError *error))failure;

公告功能

/**
 @brief 公告消息回调
 */
- (void)imClient:(VHCIMClient *)client announcementMsg:(VHCAnnouncement *)announcement;

在代理中接收公告消息回调,处理微吼课堂公告。

骰子功能

/**
 @brief 设置与取消骰子授权
 @param target_id 被授权参会人id
 @param status 1设置 2取消
 */
- (void)requestSetSieveTarget_id:(NSString *)target_id
                          status:(NSString *)status
                         success:(void(^)(void))success
                         failure:(void(^)(VHCError *error))failure;

/**
 @brief 被授权用户投掷骰子
 @param join_id 被操作参会id
 */
- (void)requestSetSievePointNumJoin_id:(NSString *)join_id
                               success:(void(^)(void))success
                               failure:(void(^)(VHCError *error))failure;

抢答功能

/**
 @brief 学员抢答
 @param join_id 被操作参会id
 */
- (void)requestStudentRushAnswerJoin_id:(NSString *)join_id
                                success:(void(^)(void))success
                                failure:(void(^)(VHCError *error))failure;

课程评价功能


/**
 @brief [通用]提交课程评价
 @param join_id 参会id
 @param evaluate 评价分数
 */
- (void)requestAddEvaluateJoin_id:(NSString *)join_id
                         evaluate:(NSString *)evaluate
                          success:(void(^)(void))success
                          failure:(void(^)(VHCError *error))failure;

二、使用

使用步骤: 1、引入聊天头文件 2、连接聊天服务器 3、接收聊天消息/获取最近的N条聊天记录 4、处理您自己的聊天显示

启动聊天服务并添加代理

//启动聊天服务器
- (void)startIMClient {
    [[VHCIMClient sharedIMClient] connect];
    [[VHCIMClient sharedIMClient] addDelegate:self];
}

回调中接收聊天数据并处理数据:

/**
 @brief 收到聊天消息回调
 */
- (void)imClient:(VHCIMClient *)client event:(NSString *)event message:(VHCMsg *)message
{
    //4、处理您自己的聊天显示
    VHCLog(@"收到聊天消息:%@",message.text);
    ChatModel *model = [[ChatModel alloc] init];
    [model setAttributesWithData:message];
    if (self.dataSource.count > 1000) {
        [self.dataSource removeLastObject];
    }
    [self.dataSource insertObject:model atIndex:0];
    [self reloadData];
}

言论状态:

/**
 @brief 主播端禁止某用户发言回调
 @param isBan       YES:被禁言,NO:被取消禁言
 @param joinId      被禁言用户的参会id,全体禁言此id为空
 @warning    讲师端对某禁言/取消禁言,会回调此方法,首次进入聊天也会回调该状态。
 */
- (void)imClient:(VHCIMClient *)client banToChat:(BOOL)isBan withJoinId:(NSString *)joinId
{
    //如果被禁言/取消禁言的是自己
    if ([joinId isEqualToString:[User defaultUser].joinId]) {
        if (isBan) {
            [VHCTool showAlertWithMessage:@"您已被禁言!"];
        }
        else {
            [VHCTool showAlertWithMessage:@"您已被取消禁言!"];
        }
    }
}
/**
 @brief 全体禁止发言状态改变回调
 @param isSilence   是否全体禁言,YES:主播开启了全体禁言,NO:主播取消了全体禁言
 @discussion 主播端开启/关闭全体禁言会回调此方法。首次进入聊天也会回调该状态。
 */
- (void)imClient:(VHCIMClient *)client wholeUserIsBan:(BOOL)isSilence {
    if (isSilence) {
        [VHCTool showAlertWithMessage:@"主播已开启了全体禁言!"];
    }
    else {
        [VHCTool showAlertWithMessage:@"主播已取消了全体禁言!"];
    }
}

其他

其他关于聊天页面以及聊天键盘等需用户自定义,demo提供简易版,不建议直接使用。