- 互动模块
- 头文件
- 类名
- 属性
- 方法
- - enterRoomWithRoomId: accessToken:
- - enterRoomWithRoomId: accessToken: userData:
- - leaveRoom
- - kickoutRoom: thirdUserId:
- - publishWithCameraView:
- - unpublish
- - kickoutStreamWithThirdUserId:
- - addVideo:
- - removeVideo:
- - invitePublishWithThirdUserId:
- - acceptPublishRequest: thirdUserId:
- - refusePublish
- - requestPublish
- - inviteUserList:
- - kickoutUserList:
- - publishAnotherLive: liveRoomId: completeBlock:
- 代理方法
- VHInteractiveRoomDelegate
- - room: error:
- - room: didChangeStatus
- - room: didEnterRoom:
- - room: didLeaveRoom: isKickOutRoom:
- - room: didAddAttendView:
- - room: didRemovedAttendView:
- - room: requestPublish:
- - room: canPublish: type:
- - room: userChangeStatus: onlineNum:
- - room: didPublish:
- - room: didUnpublish:
- - room: didUpdateOfStream: muteStream:
- - room: onStreamMixed:
- VHInteractiveRoomDelegate
- 结构体
互动模块
头文件
VHInteractiveRoom.h
类名
VHInteractiveRoom
属性
delegate
互动房间代理VHInteractiveRoomDelegate
@property (nonatomic,weak)id <VHInteractiveRoomDelegate> delegate;
status
互动房间状态VHInteractiveRoomStatus
/*
* 当前房间状态
*/
@property (nonatomic, assign, readonly) VHInteractiveRoomStatus status;
cameraView
/*
* 当前推流 cameraView 只在推流过程中存在
*/
@property (nonatomic, strong, readonly) VHRenderView *cameraView;
renderViewsById
/*
* 所有其他进入本房间的视频view
*/
@property (nonatomic, strong, readonly) NSDictionary *renderViewsById;
roomId
/*
* 房间id
*/
@property (nonatomic, copy, readonly) NSString *roomId;
isPublishing
/*
* 当前推流状态
* 是否正在推流
*/
@property (nonatomic, assign, readonly) BOOL isPublishing;
permission
/*
* 进入互动房间后可用权限
* 注: didEnterRoom 后调用有效 具体权限如下:
kick_inav 踢出互动房间 / 取消踢出互动房间
kick_inav_stream 踢出路流 / 取消踢出流
publish_inav_another 推旁路直播 / 结束推旁路直播
apply_inav_publish 申请上麦
publish_inav_stream 推流
askfor_inav_publish 邀请用户上麦推流
audit_inav_publish 审核申请上麦
*/
@property (nonatomic,copy,readonly)NSArray * permission;
方法
- enterRoomWithRoomId: accessToken:
#pragma mark - 房间操作
/*
* 加入房间
* @param roomId 互动房间id
* @param accessToken accessToken
* 调用完成等待代理回调确认接下来操作
*/
- (void)enterRoomWithRoomId:(const NSString *_Nonnull)roomId accessToken:(const NSString *_Nonnull)accessToken;
- enterRoomWithRoomId: accessToken: userData:
#pragma mark - 房间操作
/*
* 加入房间
* @param roomId 互动房间id
* @param accessToken accessToken
* @param userData 用户数据可以携带不超过255字符的字符串 可在VHRenderView中获取此值
* 调用完成等待代理回调确认接下来操作
*/
- (void)enterRoomWithRoomId:(const NSString *_Nonnull)roomId accessToken:(const NSString *_Nonnull)accessToken userData:(NSString*)userData;
- leaveRoom
/*
* 离开房间
*/
- (void)leaveRoom;
- kickoutRoom: thirdUserId:
/*
* 踢出互动房间并加入黑名单 或 从黑名单解禁
* @param isKickout Yes 踢出房间 并加入黑名单 NO 从黑名单解禁
* @param third_user_id 第三方id
*/
- (BOOL)kickoutRoom:(BOOL)isKickout thirdUserId:(const NSString *_Nonnull)third_user_id;
- publishWithCameraView:
#pragma mark - 上下麦操作
/*
* 上麦推流
* @param camera 本地摄像头view
*/
- (BOOL)publishWithCameraView:(VHRenderView*) cameraView;
- unpublish
/*
* 下麦停止推流
*/
- (BOOL)unpublish;
- kickoutStreamWithThirdUserId:
/*
* 帮别人下麦
* @param third_user_id 被下麦人的第三方id
*/
- (BOOL)kickoutStreamWithThirdUserId:(const NSString *_Nonnull)third_user_id;
- addVideo:
/*
* 接收他人视频数据
* @param streamId 他人视频 streamId
*/
- (BOOL)addVideo:(NSString*)streamId;
- removeVideo:
/*
* 不接收他人视频数据
* @param streamId 他人视频 streamId
*/
- (BOOL)removeVideo:(NSString*)streamId;
- invitePublishWithThirdUserId:
/*
* 邀请 上麦推流
* @param third_user_id 被邀请/取消邀请人的第三方id
*/
- (BOOL)invitePublishWithThirdUserId:(const NSString *_Nonnull)third_user_id;
- acceptPublishRequest: thirdUserId:
/*
* 是否接受 上麦推流申请
* @param third_user_id 互动观众的第三方id
*/
- (BOOL)acceptPublishRequest:(BOOL)isAccept thirdUserId:(const NSString *_Nonnull)third_user_id;
- refusePublish
/*
* 拒绝被邀请上麦推流
*/
- (BOOL)refusePublish;
- requestPublish
/*
* 申请上麦推流
*/
- (BOOL)requestPublish;
- inviteUserList:
/*
* 互动房间用户列表
* userList数据结构
* third_party_user_id 第三方用户ID
* status 用户状态 1 推流中 2 观看中 3 受邀中 4 申请上麦中
*/
- (BOOL)inviteUserList:(void(^)(NSArray* userList)) block;
- kickoutUserList:
/*
* 互动房间被踢出用户列表
* userList数据结构 [xxxxxx,...]
*/
- (BOOL)kickoutUserList:(void(^)(NSArray* userList)) block;
- publishAnotherLive: liveRoomId: completeBlock:
接口参数及错误码介绍
#pragma mark - 旁路操作
/*
* 开启/关闭旁路直播
* @param isOpen Yes开启旁路直播 NO关闭旁路直播
* @param roomID 旁路直播间
*/
- (BOOL)publishAnotherLive:(BOOL)isOpen liveRoomId:(const NSString *_Nonnull)liveRoomId completeBlock:(void(^)(NSError *error)) block;
代理方法
VHInteractiveRoomDelegate
- room: error:
#pragma mark - 房间信息回调
/*
* 房间错误回调
*/
- (void)room:(VHInteractiveRoom *)room error:(NSError*)error;
- room: didChangeStatus
/*
* 房间状态变化
*/
- (void)room:(VHInteractiveRoom *)room didChangeStatus:(VHInteractiveRoomStatus)status;
- room: didEnterRoom:
/*
* 进入互动房间
*/
- (void)room:(VHInteractiveRoom *)room didEnterRoom:(NSString *)third_user_id;
- room: didLeaveRoom: isKickOutRoom:
/*
* 离开互动房间
*/
- (void)room:(VHInteractiveRoom *)room didLeaveRoom:(NSString *)third_user_id isKickOutRoom:(BOOL)isKickOut;
- room: didAddAttendView:
/*
* 他人上麦消息
*/
- (void)room:(VHInteractiveRoom *)room didAddAttendView:(VHRenderView *)attendView;
- room: didRemovedAttendView:
/*
* 他人下麦消息
*/
- (void)room:(VHInteractiveRoom *)room didRemovedAttendView:(VHRenderView *)attendView;
- room: requestPublish:
#pragma mark - 上下麦推流信息回调
/*
* 收到别人上麦申请 调用审核申请上麦接口回复
*/
- (void)room:(VHInteractiveRoom *)room requestPublish:(NSString *)third_user_id;
- room: canPublish: type:
/*
*
* canPublish YES 可以上麦推流 NO 不可上麦推流
* type 1、进入房间后有无上麦推流权限 2、申请上麦 审核后有无上麦推流权限 3、收到邀请上麦消息 获得上麦推流权限
*/
- (void)room:(VHInteractiveRoom *)room canPublish:(BOOL)canPublish type:(int) type;
- room: userChangeStatus: onlineNum:
/*
* 房间中人员列表信息变化
*/
- (void)room:(VHInteractiveRoom *)room userChangeStatus:(int)status onlineNum:(NSInteger)onlineNum;
- room: didPublish:
/*
* 推流成功
*/
- (void)room:(VHInteractiveRoom *)room didPublish:(VHRenderView *)cameraView;
- room: didUnpublish:
/*
* 停止推流成功
* reason "主动下麦" "被动下麦"
*/
- (void)room:(VHInteractiveRoom *)room didUnpublish:(NSString *)reason;
- room: didUpdateOfStream: muteStream:
/**
@brief 流音视频开启情况
@param streamId 流id
@param muteStream 流音视频开启情况
*/
- (void)room:(VHInteractiveRoom *)room didUpdateOfStream:(NSString *)streamId muteStream:(NSDictionary *)muteStream;
- room: onStreamMixed:
/**
@brief 服务器已准备好混流可以调用混流接口
@param msg msg
@discussion onStreamMixed
*/
- (void)room:(VHInteractiveRoom *)room onStreamMixed:(NSDictionary *)msg;
结构体
VHInteractiveRoomStatus
/*
* 互动房间状态
*/
typedef NS_ENUM(NSInteger, VHInteractiveRoomStatus) {
VHInteractiveRoomStatusReady,
VHInteractiveRoomStatusConnected,
VHInteractiveRoomStatusDisconnected,
VHInteractiveRoomStatusError
};