讨论
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;
在代理中接收公告消息回调,处理微吼课堂公告。
二、使用
使用步骤: 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提供简易版,不建议直接使用。