概述
如果使用聊天和问答功能,需要用户提前调用WebApi进行注册用户操作。否则提示用户不存在。详细接口 说明,查看创建第三方用户
VHallChat.h
创建聊天实例
创建聊天实例
_chat = [[VHallChat alloc] initWithMoviePlayer:_moviePlayer];
看直播、发直播
_chat = [[VHallChat alloc]initWithLivePublish:self.engine];
设置代理
设置代理 _chat.delegate = self;
/**
* 是否被禁言
*/
@property (nonatomic, assign,readonly) BOOL isSpeakBlocked;
/**
* 是否全体被禁言
*/
@property (nonatomic, assign,readonly) BOOL isAllSpeakBlocked;
发送聊天内容
- 发送聊天内容
- 成功回调成功Block
- 失败回调失败Block
- 失败Block中的字典结构如下:
- key:code 表示错误码
- value:content 表示错误信息
(void)sendMsg:(NSString )msg success:(void(^)())success failed:(void (^)(NSDictionary failedData))reslutFailedCallback;
获取聊天历史记录
/**
* 获取最近20条聊天历史记录,返回至多20条数据,最新消息在当前数组最后一位。
* 在进入直播活动后调用
* @param showAll NO 只获取本次直播产生的聊天记录,YES 获取包含以前开播产生的聊天记录 (H5活动该参数无效,等同YES)
* @param success 成功回调成功Block 返回聊天历史记录
* @param reslutFailedCallback 失败回调失败Block
* 失败Block中的字典结构如下:
* key:code 表示错误码
* value:content 表示错误信息
*/
- (void)getHistoryWithType:(BOOL)showAll success:(void(^)(NSArray* msgs))success failed:(void (^)(NSDictionary* failedData))reslutFailedCallback;
/**
* 5.0+版本新增方法
* 分页获取聊天历史记录,最新消息在当前数组最后一位。(仅支持H5活动,Flash活动使用该方法效果同上:getHistoryWithType:YES)
* @param startTime 查询该时间至今的所有聊天记录,若不指定时间可传nil。格式如:@"2020-01-01 12:00:00"
* @param pageNum 当前页码数,第一页从1开始
* @param pageSize 每页数据个数
* @param success 成功回调成功Block msgs:聊天历史记录
* @param reslutFailedCallback 失败回调失败Block
* 失败Block中的字典结构如下:
* key:code 表示错误码
* value:content 表示错误信息
*/
- (void)getHistoryWithStartTime:(NSString *)startTime pageNum:(NSInteger)pageNum pageSize:(NSInteger)pageSize success:(void(^)(NSArray <VHallChatModel *> * msgs))success failed:(void (^)(NSDictionary* failedData))reslutFailedCallback;
发送自定义消息
/**
* 发送自定义消息
* 在进入直播活动后调用
* 成功回调成功Block
* 失败回调失败Block
* 失败Block中的字典结构如下:
* key:code 表示错误码
* value:content 表示错误信息
*/
- (void)sendCustomMsg:(NSString *)jsonStr success:(void(^)())success failed:(void (^)(NSDictionary* failedData))reslutFailedCallback;
接收上下线消息(代理方法)
- 接收上下线消息
- 代理方法先设置delegate属性
- 接收到的VHallOnlineStateModel实例数组
- (void)reciveOnlineMsg:(NSArray *)msgs;
接收聊天消息(代理方法)
- 接收聊天消息
- 代理方法先设置delegate属性
- 接收到的VHallChatModel实例数组
- (void)reciveChatMsg:(NSArray *)msgs;
收到自定义消息(代理方法)
/**
* 收到自定义消息
*/
- (void)reciveCustomMsg:(NSArray *)msgs;
收到被禁言/取消禁言(代理方法)
/**
* 收到被禁言/取消禁言
*/
- (void)forbidChat:(BOOL)forbidChat;
收到全体禁言/取消全体禁言(代理方法)
/**
* 收到全体禁言/取消全体禁言
*/
- (void)allForbidChat:(BOOL)allForbidChat;
消息体内的参数以及说明
/**
* 公共参数
*/
@interface VHallMsgModels : NSObject
@property (nonatomic, copy) NSString * join_id; //参会id
@property (nonatomic, copy) NSString * account_id; //微吼用户ID
@property (nonatomic, copy) NSString * user_name; //参会时的昵称
@property (nonatomic, copy) NSString * avatar; //头像url,如果没有则为空字符串
@property (nonatomic, copy) NSString * room; //房间号,即活动id
@property (nonatomic, copy) NSString * time; //发送时间,根据服务器时间确定
@property (nonatomic, copy) NSString * role; //用户类型 host:主持人 guest:嘉宾 assistant:助手 user:观众
@property (nonatomic,assign)NSInteger role_name; //用户类型 1:主持人 2:观众 3:助手 4:嘉宾
@property (nonatomic, strong) id context; //附加消息
@property (nonatomic,assign)NSInteger pv; //频道在线连接数
@property (nonatomic,assign)NSInteger uv; //频道在线用户数
@property (nonatomic,assign)NSInteger bu; //频道业务单元
@property (nonatomic, copy) NSString * client; //消息来源
@end
/**
* 上下线消息
*/
@interface VHallOnlineStateModel : VHallMsgModels
@property (nonatomic, copy) NSString * event; //online/offline:上下线消息
@property (nonatomic, copy) NSString * concurrent_user;//房间内当前用户数uv
@property (nonatomic, copy) NSString * attend_count; //参会人数pv
@property (nonatomic, copy) NSString * tracksNum; //PV
@property (nonatomic, assign) BOOL is_gag; //是否禁言
@property (nonatomic, assign) NSInteger device_status; //设备状态
@property (nonatomic, assign) NSInteger device_type; //设备类型
@end
/**
* 聊天消息
*/
typedef NS_ENUM(NSInteger,ChatMsgType) {
ChatMsgTypeText = 0, // 文本
ChatMsgTypeImage = 1, // 图片
ChatMsgTypeLink = 2, // 链接
ChatMsgTypeVideo = 3, // 视频
ChatMsgTypeVoice = 4, // 音频
};
@interface VHallChatModel : VHallMsgModels
@property (nonatomic, copy) NSString * text; //聊天消息
@property (nonatomic, assign) ChatMsgType type; //聊天消息类型
@property (nonatomic, copy) NSArray * imageUrls; //图片消息url列表
@property (nonatomic, strong) VHallChatModel *replyMsg; //回复消息
@property (nonatomic, copy) NSArray * atList; //@人列表
@end
/**
* 自定义消息
*/
@interface VHallCustomMsgModel : VHallMsgModels
@property (nonatomic, copy) NSString * jsonstr; //自定义消息,如果没有则为空字符串
@end
/**
* 历史评论
*/
@interface VHCommentModel : VHallMsgModels
@property (nonatomic, copy) NSString * text; //评论内容
@property(nonatomic,copy) NSString *commentId; //评论ID
@property (nonatomic, strong) VHallChatModel *replyMsg; //回复消息
@property (nonatomic, copy) NSArray * imageUrls; //图片消息url列表
@property (nonatomic, copy) NSArray * atList; //@人列表
@end
/**
* 提问消息
*/
@interface VHallQuestionModel : NSObject
@property (nonatomic, copy) NSString * type; //类型
@property (nonatomic, copy) NSString * question_id; //问题ID
@property (nonatomic, copy) NSString * nick_name; //昵称
@property (nonatomic, copy) NSString * content; //提问内容
@property (nonatomic, copy) NSString * join_id; //参会id
@property (nonatomic, copy) NSString * created_at; //提问时间
@property (nonatomic, copy) NSString * avatar; //头像
@end
/**
* 回答消息
*/
@interface VHallAnswerModel : VHallQuestionModel
@property (nonatomic, copy) NSString * answer_id; //回答ID
@property (nonatomic, copy) NSString * role_name; //角色
@property (nonatomic, assign)BOOL is_open; //是否公开回答
@property (nonatomic, copy) NSString * avatar;
@end
/**
* 问答消息
*/
@interface VHallQAModel : VHallMsgModels
@property (nonatomic, strong) VHallQuestionModel * questionModel; //提问消息
@property (nonatomic, strong) NSMutableArray<VHallAnswerModel *> * answerModels; //回答消息数组
@end
/**
* 抽奖消息
*/
@interface VHallLotteryModel : NSObject
@property (nonatomic, copy) NSString * lottery_id; //抽奖ID
@property (nonatomic, copy) NSString * survey_id; //活动ID
@end
/**
* 开始抽奖消息
*/
@interface VHallStartLotteryModel : VHallLotteryModel
@property (nonatomic, copy) NSString * num; //抽奖人数
@end
/**
* 抽奖结果
*/
@interface VHallLotteryResultModel : NSObject
@property (nonatomic, copy) NSString * nick_name; //中奖人昵称
@end
/**
* 结束抽奖消息
*/
@interface VHallEndLotteryModel : VHallLotteryModel
@property (nonatomic, assign) BOOL isWin; //是否中奖
@property (nonatomic, copy) NSString * account; //登录账号
@property (nonatomic, copy) NSMutableArray<VHallLotteryResultModel *> * resultModels; //中奖结果
@end
/**
* 调查问卷消息
*/
@interface VHallSurveyModel : NSObject
@property(nonatomic,copy) NSString * releaseTime;//发起时间
@property(nonatomic,copy) NSString * surveyId;//问卷ID
@property(nonatomic,copy) NSString * joinId;
@property (nonatomic, copy) NSURL *surveyURL;//问卷URL地址v4.0.4新增
@end