跨房间连麦
流程说明
跨房间连麦功能中区分主房间和副房间。跨房间连麦前需要双方都已经加入自己的主房间,未加入主房间前无法进行连麦的邀请和被邀请。
主副房间定义如下:
- 主房间:本端在最开始加入的房间,即:
RCRTCRoom.h
- 副房间:在接受邀请后加入的对方房间,即:
RCRTCOtherRoom.h
两种房间的类都有对应的代理 RCRTCRoomEventDelegate
和 RCRTCOtherRoomEventDelegate
用来区分不同类型房间的回调。
发起邀请
向指定用户发送跨房间连麦请求:
Objective C
- (void)requestJoinOtherRoom:(NSString *)inviteeRoomId
userId:(NSString *)inviteeUserId
autoMix:(BOOL)autoMix
extra:(NSString *)extra
completion:(RCRTCOperationCallback)completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
inviteeRoomId | NSString | 被邀请人所在房间号 |
inviteeUserId | NSString | 被邀请人userId |
autoMix | BOOL | 是否将邀请人音视频资源发送到被邀请人房间中合流 |
extra | NSString | 附加信息, 可随消息发送给被邀请人 |
completion | RCRTCOperationCallback | 动作的回调 |
示例代码:
Objective C
[self.mainRtcRoom.localUser requestJoinOtherRoom:otherRoomId
userId:otherRoomUserId
autoMix:YES
extra:@""
completion:^(BOOL isSuccess, RCRTCCode code) {
}];
取消邀请
取消向指定用户发送跨房间连麦请求:
Objective C
- (void)cancelRequestJoinOtherRoom:(NSString *)inviteeRoomId
userId:(NSString *)inviteeUserId
extra:(NSString *)extra
completion:(RCRTCOperationCallback)completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
inviteeRoomId | NSString | 被邀请人所在房间号 |
inviteeUserId | NSString | 被邀请人userId |
extra | NSString | 附加信息, 可随消息发送给被邀请人 |
completion | RCRTCOperationCallback | 动作的回调 |
示例代码:
Objective C
[self.mainRtcRoom.localUser cancelRequestJoinOtherRoom:otherRoomId
userId:otherRoomUserId
extra:@""
completion:^(BOOL isSuccess, RCRTCCode code) {
}];
应答邀请
被邀请方响应邀请方发出的跨房间连麦请求。
Objective C
- (void)responseJoinOtherRoom:(NSString *)inviterRoomId
userId:(NSString *)inviterUserId
agree:(BOOL)agree
autoMix:(BOOL)autoMix
extra:(NSString *)extra
completion:(RCRTCOperationCallback)completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
inviterRoomId | NSString | 邀请人所在房间号 |
inviterUserId | NSString | 邀请人userId |
agree | BOOL | 是否同意加入副房间 |
autoMix | BOOL | 是否将被邀请人音视频资源发送到邀请人房间中合流 |
extra | NSString | 附加信息, 可随消息发送给被邀请人(选填) |
completion | RCRTCOperationCallback | 动作的回调 |
示例代码
Objective C
[self.mainRtcRoom.localUser responseJoinOtherRoom:otherRoomId
userId:otherRoomuserId
agree:YES
autoMix:YES
extra:@""
completion:^(BOOL isSuccess, RCRTCCode code) {}];
加入副房间
邀请方与被邀请方连在麦邀请同意后加入副房间。
Objective C
- (void)joinOtherRoom:(NSString *)roomId
completion:(void (^)(RCRTCOtherRoom * _Nullable room, RCRTCCode code))completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
roomId | NSString | 副房间 Id, 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式 最长 64 个字符 |
completion | void (^)(RCRTCOtherRoom * _Nullable room, RCRTCCode code) | 加入副房间的回调 |
示例代码:
Objective C
[[RCRTCEngine sharedInstance] joinOtherRoom:roomId
completion:^(RCRTCOtherRoom * _Nullable room, RCRTCCode code) {
room.delegate = self;
}];
订阅资源
订阅多路远端指定音视频流。
Objective C
- (void)subscribeStream:(NSArray <RCRTCInputStream *> *)avStreams
tinyStreams:(NSArray <RCRTCInputStream *> *)tinyStreams
completion:(nonnull RCRTCOperationCallback)completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
avStreams | NSArray <RCRTCInputStream *> | 需要订阅的音频流和视频大流数组 |
tinyStreams | NSArray <RCRTCInputStream *> | 需要订阅的视频小流数组 |
completion | RCRTCOperationCallback | 订阅完成的回调 |
示例代码:
Objective C
[self.mainRTCRoom.localUser subscribeStream:streams
tinyStreams:@[]
completion:^(BOOL isSuccess, RCRTCCode code) {
}];
取消订阅
取消订阅多路远端指定音视频流,远端用户离开与自己离开主、副房间时 RongRTCLib 内部会取消订阅,不需要上层处理。
Objective C
- (void)unsubscribeStreams:(nonnull NSArray <RCRTCInputStream *> *)streams
completion:(nonnull RCRTCOperationCallback)completion;
参数说明:
参数 | 类型 | 说明 |
---|---|---|
streams | NSArray <RCRTCInputStream *> | 音视频流数组 |
completion | RCRTCOperationCallbac | 取消订阅完成的回调 |
示例代码:
Objective C
[self.mainRTCRoom.localUser unsubscribeStreams:streams
completion:^(BOOL isSuccess, RCRTCCode code) {
}];