joinChannel method Null safety

Future<void> joinChannel(
  1. String? token,
  2. String? optionalInfo,
  3. int optionalUid,
  4. ChannelMediaOptions options
)

使用 UID 加入频道。

该方法与 RtcEngine 类下的 RtcEngine.joinChannel 方法有以下区别:

  • RtcChannel.joinChannel
    • channelName 参数。因为创建 RtcChannel 对象时已指定了 channelName
    • 加了 options 参数,可在加入频道前通过该参数设置是否订阅该频道的音视频流。
    • 通过创建多个 RtcChannel 对象,并调用相应对象的 joinChannel 方法,实现同时加入多个频道。
    • 通过该方法加入频道后,SDK 默认不发布本地音视频流到本频道,用户需要调用 publish 方法进行发布。
  • RtcEngine.joinChannel
    • 需要填入可以标识频道的 channelName
    • options 参数。加入频道即默认订阅频道内的音视频流。
    • 只允许加入一个频道。
    • 通过该方法加入频道后,SDK 默认发布音视频流发布到本频道。

用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute 方法实现。

Note

  • 该方法不支持相同的用户重复加入同一个频道。
  • Agora 建议不同频道中使用不同的 UID。
  • 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。
  • 请确保用于生成 Token 的 App ID 和创建 RtcEngine 对象时用的 App ID 一致。

Parameter token 在 App 服务器端生成的用于鉴权的 Token。详见从服务端生成 Token

Parameter optionalInfo 开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。

Parameter optionalUid 用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。 如果不指定(即设为 0),SDK 会自动分配一个, 并在 joinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。

Parameter options 频道媒体设置选项。详见 ChannelMediaOptions

Implementation

@override
Future<void> joinChannel(String? token, String? optionalInfo, int optionalUid,
    ChannelMediaOptions options) {
  return _invokeMethod('joinChannel', {
    'token': token,
    'optionalInfo': optionalInfo,
    'optionalUid': optionalUid,
    'options': options.toJson(),
  });
}