基本操作
创建/加入房间
调用 RCRTCEngine 的 joinroom:completion: 方法加入房间,如果该房间之前不存在,则会在调用时自动创建并加入。
注意事项
每个房间在创建之初,会由融云服务生成一个在融云服务唯一的 SessionId,可用于后台业务查询或与融云进行问题沟通。当房间内的所有人退出或被服务器判定掉线后,此 Session 结束。之后即便再用相同的 RoomId 创建房间,SessionId 也会更新为不同值。
接口原型
Objective C
- (void)joinRoom:(NSString *)roomId
completion:(nullable void (^)(RCRTCRoom * _Nullable room, RCRTCCode code))completion;
- (void)joinRoom:(NSString *)roomId
config:(nullable RCRTCRoomConfig *)config
completion:(nullable void (^)(RCRTCRoom * _Nullable room, RCRTCCode code))completion;
参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
roomId | NSString | 是 | 房间唯一 ID。支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最长 64 个字符 |
config | RCRTCRoomConfig | 否 | 房间配置,包含以下属性:
|
completion | Block | 否 | 结果回调,返回 RCRTCRoom 房间对象。可从中获取当前房间内的所有主播,以及其他属性 |
代码示例
会议模式下,推荐使用不带 RCRTCRoomConfig 的 joinroom:completion: 方法:
Objective C
#import <RongRTCLib/RongRTCLib.h>
[[RCRTCEngine sharedInstance] joinRoom:@"Your_Room_ID" completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
if (code != RCRTCCodeSuccess) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
return;
}
// 成功后的逻辑处理 ...
}];
直播模式下,推荐使用带 RCRTCRoomConfig 的 joinroom:config:completion: 方法:
Objective C
// 创建房间配置对象,设置房间类型为音视频直播,角色身份为主播。
RCRTCRoomConfig *config = [[RCRTCRoomConfig alloc] init];
config.roomType = RCRTCRoomTypeLive;
config.liveType = RCRTCLiveTypeAudioVideo;
config.roleType = RCRTCLiveRoleTypeBroadcaster;
[[RCRTCEngine sharedInstance] joinRoom:@"Your_Room_ID" config:config completion:^(RCRTCRoom * _Nullable room, RCRTCCode code) {
if (code != RCRTCCodeSuccess) {
// 由于 SDK 未初始化,网络异常等原因,造成的加入房间失败后的逻辑处理 ...
// 失败原因参考 code 的具体含义。
// 处理逻辑可以是过段时间重新加入,或给用户弹通知等。
return;
}
// 成功后的逻辑处理 ...
}];
退出房间
注意事项
如果用户开启了视频采集,在调用 leaveRoom 之前必须手动调用 [[RCRTCEngine sharedInstance].defaultVideoStream stopCapture]
关闭视频采集。离开房间接口不会自动关闭视频采集,如不主动关闭可能会导致耗电量增加等问题。
接口原型
Objective C
- (void)leaveRoom:(nullable RCRTCOperationCallback)completion;
参数说明
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
completion | RCRTCOperationCallback | 否 | 离开房间回调 |
代码示例
Objective C
// 如果开启了视频采集,先关闭视频采集
[[RCRTCEngine sharedInstance].defaultVideoStream stopCapture];
// 离开房间
[[RCRTCEngine sharedInstance] leaveRoom:^(BOOL isSuccess, RCRTCCode code) {
}];