switchChannel abstract method

Future<int> switchChannel(
  1. String? token,
  2. String channelName, {
  3. NERtcJoinChannelOptions? channelOptions,
})

快速切换音视频房间。

房间场景为直播场景时,房间中角色为观众的成员可以调用该方法从当前房间快速切换至另一个房间。

使用前提

  • 该方法仅适用于直播场景中,请确保已通过 setChannelProfile 方法设置房间场景为直播场景(liveBroadcasting)。
  • 该方法仅适用于角色为观众的音视频房间成员调用。请确保已通过 setClientRole 设置房间成员的角色为观众。

调用时机

请在引擎初始化之后调用此接口,且该方法仅可在加入房间后调用。

说明

房间成员成功切换房间后,默认订阅房间内所有其他成员的音频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用 subscribeRemoteAudio 方法,并设置 subscribe 参数为 false。

参数说明

token 在服务器端生成的用于鉴权的安全认证签名(Token)。可设置为:

  • 已获取的 Token。安全模式下必须设置为获取到的 Token。默认 token 有效期 10 min,也可以定期通过应用服务器向云信服务器申请 token 或者申请长期且可复用的 token。推荐使用安全模式。

  • 非安全模式下可设置为 null。安全性不高,建议在产品正式上线前联系对应商务经理转为安全模式。

channelName 期望切换到的目标房间名称

相关回调

成功调用该方法切换房间后: 本端会先收到离开房间的回调 NERtcChannelEventCallback.onLeaveChannel,其中 result 参数为 NERtcErrorCode.leaveChannelForSwitch。再收到成功加入新房间的回调 NERtcChannelEventCallback.onJoinChannel

远端用户会收到 NERtcChannelEventCallback.onUserLeaveNERtcChannelEventCallback.onUserJoined 的回调。

返回值

  • 0(OK):方法调用成功。
  • 其他:方法调用失败。
    • 403(reserveNoPermission):没有权限,比如主播无法切换房间。
    • 30001(errFatal):内部错误,比如音频相关模块未初始化成功。
    • 30003(invalidParam):参数错误,比如房间名称为空字符串。
    • 30005(invalidState):状态错误,比如引擎尚未初始化。
    • 30100 (roomAlreadyJoined): 频道名无效,已在此频道中。
    • 30101(roomNotJoined): 尚未加入房间。

Implementation

Future<int> switchChannel(String? token, String channelName,
    {NERtcJoinChannelOptions? channelOptions});