房间语音通话

本文主要介绍 云上曲率RTC SDK的提供的房间语音通话功能。

功能描述

房间语音通话是指2个及2个以上的用户通过房间开展群体语音通话的场景。云上曲率RTC SDK为开发者提供如下房间语音通话基础内容:

  • 创建RTC房间
  • 加入RTC房间
  • 设置活跃RTC房间
  • 邀请加入RTC房间
  • 退出RTC房间
  • 获取RTC房间成员列表
  • 获取RTC房间成员数量
  • 屏蔽/解除屏蔽房间用户语音

接口说明

房间事件变更通知

房间管理功能中,当出现房间成员变更、房间解散时,会接收到服务端的通知PUSH。

创建RTC房间

通过createVoiceRoomWithId接口,用户可以创建RTC房间。创建成功后,会自动加入到房间中。

接口参数说明:

参数 含义 说明
roomId 房间ID 创建的RTC房间ID
enableRecord 是否允许录制 录制功能,默认为false,不录制。如有录制需求,请联系云上曲率技术人员
timeout 超时时间 加入房间请求的超时时间,单位为秒
代码示例
-(void)createVoiceRoomWithId:(NSNumber * _Nonnull)roomId
                enableRecord:(BOOL)enableRecord
                     timeout:(int)timeout
                     success:(void(^)(RTCAudioCreateRoomAnswer * answer))successCallback
                        fail:(RTCAnswerFailCallBack)failCallback;

加入房间

用户可以使用enterVoiceRoomWithRoomId接口实现加入已存在的RTC房间。

接口参数说明:

参数 含义 说明
roomId 房间ID 用户待加入的RTC房间ID
timeout 超时时间 请求的超时时间,单位为秒

注意:房间当前默认为开放式房间,任何人都可以直接加入。

在云上曲率控制台有一个配置 “支持多房间” :

  • 设置 “”,那么用户可以加入多个房间,但同时需要设置活跃房间,并接收活跃房间的声音和在活跃房间通话。如果没有设置活跃房间,则不会接收任何房间的声音。
  • 设置 “”,那么用户同一时间只能加入一个房间,接收该房间的声音和在该房间进行通话。
  • 设置活跃房间只针对实时语音房间有效。
示例代码
-(void)enterVoiceRoomWithRoomId:(NSNumber * _Nonnull)roomId
                        timeout:(int)timeout
                        success:(void(^)(RTCAudioEnterRoomAnswer * answer))successCallback
                           fail:(RTCAnswerFailCallBack)failCallback;
@property(nonatomic,assign,readonly)int64_t voiceActiveRoom;
-(BOOL)setCurrentVoiceActiveRoom:(int64_t)voiceActiveRoom;//设置活跃房间
@property(nonatomic,assign)BOOL isOpenVoiceSpeak;//默认闭麦
@property(nonatomic,assign)BOOL isOpenVoicePlay;//默认播放房间声音

邀请加入房间

用户可以使用inviteUserIntoVoiceRoomWithId接口实现邀请其他用户加入该用户已加入的RTC房间。

接口参数说明:

参数 含义 说明
roomId 房间ID 邀请用户加入的RTC房间ID
userIds 用户ID 邀请加入RTC房间的用户ID
timeout 超时时间 邀请请求超时时间,单位为秒

当接收到邀请时,房间外用户会收到 rtcAudioDelegate处理的 rtcInviteIntoVoiceRoomNotificationWithRoomId推送消息。如果用户同意,需要调用enterVoiceRoomWithRoomId接口进入房间。

ackInviteIntoRoom接口参数说明:

参数 含义 说明
roomId 房间ID 邀请加入的房间ID
userId 用户ID 发起邀请的用户ID
示例代码
-(void)inviteUserIntoVoiceRoomWithId:(NSNumber * _Nonnull)roomId
                             userIds:(NSArray<NSNumber*>*)userIds
                             timeout:(int)timeout
                             success:(void(^)(void))successCallback
                                fail:(RTCAnswerFailCallBack)failCallback;
-(void)rtcInviteIntoVoiceRoomNotificationWithRoomId:(int64_t)roomId userId:(int64_t)userId;

退出RTC房间

用户可以通过exitVoiceRoomWithId接口退出已加入的RTC房间。

接口参数说明:

参数 含义 说明
roomId 房间ID 要退出的RTC房间ID
timeout 超时时间 请求的超时时间,单位为秒
代码示例
-(void)exitVoiceRoomWithId:(NSNumber * _Nonnull)roomId
                   timeout:(int)timeout
                   success:(void(^)(void))successCallback
                      fail:(RTCAnswerFailCallBack)failCallback;

获取RTC房间成员列表

RTC房间内成员可以使用getVoiceRoomMembersWithId接口获取所在RTC房间的成员情况,包括成员数量等。

接口参数说明:

参数 含义 说明
roomId 房间ID 获取房间成员请求的RTC房间ID
timeout 超时时间 请求的超时时间,单位为秒
代码示例
-(void)getVoiceRoomMembersWithId:(NSNumber * _Nonnull)roomId
                         timeout:(int)timeout
                         success:(void(^)(RTCAudioRoomMembersAnswer*))successCallback
                            fail:(RTCAnswerFailCallBack)failCallback;

获取RTC房间成员数量

未加入RTC房间的用户可以使用getVoiceRoomMemberCountWithId接口获取RTC房间的成员数量。

接口参数说明:

参数 含义 说明
roomId 房间ID 获取房间成员数量的RTC房间ID
timeout 超时时间 请求的超时时间,单位为秒
代码示例
-(void)getVoiceRoomMemberCountWithId:(NSNumber * _Nonnull)roomId
                             timeout:(int)timeout
                             success:(void(^)(RTCAudioRoomMemberCount*))successCallback
                                fail:(RTCAnswerFailCallBack)failCallback;

屏蔽RTC房间中用户语音

shieldUserInVoiceRoomWithId接口可以屏蔽掉RTC房间内容用户的语音。屏蔽后,该用户的语音不会被房间内其他用户接收到。

接口参数说明:

参数 含义 说明
roomId 房间ID 要屏蔽用户语音的RTC房间ID
userIds 用户ID 屏蔽的用户ID
timeout 超时时间 请求的超时时间,单位为秒
代码示例
-(void)shieldUserInVoiceRoomWithId:(NSNumber * _Nonnull)roomId
                           userIds:(NSArray<NSNumber*>*)userIds
                           timeout:(int)timeout
                           success:(void(^)(void))successCallback
                              fail:(RTCAnswerFailCallBack)failCallback;

解除屏蔽RTC房间中用户语音

removeShieldUserInVoiceRoomWithId接口可以解除屏蔽RTC房间内容用户的语音。解除屏蔽后,该用户的语音可以被房间内其他用户接收到。

接口参数说明:

参数 含义 说明
roomId 房间ID 要解除屏蔽用户语音的RTC房间ID
userIds 用户ID 解除屏蔽的用户ID
timeout 超时时间 请求的超时时间,单位为秒
代码示例
-(void)removeShieldUserInVoiceRoomWithId:(NSNumber * _Nonnull)roomId
                                 userIds:(NSArray<NSNumber*>*)userIds
                                 timeout:(int)timeout
                                 success:(void(^)(void))successCallback
                                    fail:(RTCAnswerFailCallBack)failCallback;