switchChannel method

Future<int> switchChannel(
  1. String? token,
  2. String channelName
)

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

  • 本端会先收到离开房间的回调 [NERtcChannelEventCallback.onLeaveChannel],其中 result 参数为 [NERtcErrorCode.leaveChannelForSwitch]。再收到成功加入新房间的回调 [NERtcChannelEventCallback.onJoinChannel]。
  • 远端用户会收到 [NERtcChannelEventCallback.onUserLeave] 和 [NERtcChannelEventCallback.onUserJoined] 的回调。 房间成员成功切换房间后,默认订阅房间内所有其他成员的音频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 [subscribeRemoteAudio] 方法传入false实现。


    该方法仅适用于直播场景中,角色为观众的音视频房间成员。即已通过接口 setChannelProfile 设置房间场景为直播,通过 setClientRole 设置房间成员的角色为观众。

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

    • 已获取的 Token。安全模式下必须设置为获取到的 Token。默认 token 有效期 10 min,也可以定期通过应用服务器向云信服务器申请 token 或者申请长期且可复用的 token。推荐使用安全模式。
    • null。非安全模式下可设置为 null。安全性不高,建议在产品正式上线前联系对应商务经理转为安全模式。 [channelName] 期望切换到的目标房间名称


      方法调用成功返回 0 ,其他调用失败:

      • [NERtcErrorCode.switchChannelNotJoined]: 切换频道时不在会议中
      • [NERtcErrorCode.reserveNoPermission]: 用户角色不是观众。
      • [NERtcErrorCode.roomAlreadyJoined]: 频道名无效,已在此频道中。

Implementation

Future<int> switchChannel(String? token, String channelName) async {
  IntValue reply = await _api.switchChannel(SwitchChannelRequest()
    ..token = token
    ..channelName = channelName);
  return reply.value ?? -1;
}