joinChannelWithUserAccountEx abstract method

Future<void> joinChannelWithUserAccountEx({
  1. required String token,
  2. required String channelId,
  3. required String userAccount,
  4. required ChannelMediaOptions options,
})

使用 User Account 和 Token 加入频道,并设置频道媒体选项。

调用该方法前,如果你未调用 registerLocalUserAccount 注册一个 User Account,调用该方法加入频道时,SDK 会自动为你创建一个 User Account。先调用 registerLocalUserAccount 方法注册 Account,再调用此方法加入频道,可以缩短进入频道的时间。 用户成功加入频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过设置 options 参数或调用相应的 mute 方法实现。 为保证通信质量,请确保频道内使用同一类型的数据标识用户身份。即同一频道内需要统一使用 UID 或 User Account。如果有用户通过 Web SDK 加入频道,请确保 Web 加入的用户也是同样类型。 该方法仅支持用户一次加入一个频道。 使用不同 App ID 的 App 不能互通。 加入频道前,请确保用于生成 Token 的 App ID 和调用 initialize 方法初始化引擎时使用的是同一个 App ID,否则使用 Token 加入频道会失败。

  • token 在服务端生成的用于鉴权的动态密钥。详见使用 Token 鉴权。 (推荐)如果你的项目开启了安全模式,即选择 APP ID + Token 为鉴权机制,则该参数为必填。 如果你的项目仅开启调试模式,即选择 APP ID 为鉴权机制,则无需填入 Token 即可加入频道。成功加入频道 24 小时后会自动退出该频道。 如果你需要同时加入多个频道或在频道间频繁切换,声网推荐你使用通配 Token 以避免每加入一个新的频道都需向服务端申请一个新的 Token,详见 使用通配 Token
  • userAccount 用户 User Account。该参数用于标识实时音视频互动频道中的用户。你需要自行设置和管理用户的 User Account,并确保同一频道中每个用户的 User Account 是唯一的。 该参数为必填,最大不超过 255 字节,不可填 null 。以下为支持的字符集范围(共 89 个字符): 26 个小写英文字母 a-z 26 个大写英文字母 A-Z 10 个数字 0-9 空格 "!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、""、""、"^"、"_"、"{"、"}"、"|"、"~"、","
  • options 频道媒体设置选项。详见 ChannelMediaOptions 。

Returns 方法成功调用时,无返回值;方法调用失败时,会抛出 AgoraRtcException 异常,你需要捕获异常并进行处理。详见错误码了解详情和解决建议。 < 0:方法调用失败。详见错误码了解详情和解决建议。 -2:传入的参数无效。例如,使用了不合法的 Token, uid 参数未设置为整型,或 ChannelMediaOptions 成员值不合法。你需要填入有效的参数,重新加入频道。 -3: RtcEngine 对象初始化失败。你需要重新初始化 RtcEngine 对象。 -7: RtcEngine 对象尚未初始化。你需要在调用该方法前成功初始化 RtcEngine 对象。 -8: RtcEngine 对象内部状态错误。可能的原因是:调用 startEchoTest 开始通话回路测试后,未调用 stopEchoTest 停止测试就调用该方法加入频道。你需要在该方法前调用 stopEchoTest 。 -17:加入频道被拒绝。可能的原因是用户已经在频道中。建议通过 onConnectionStateChanged 回调判断用户是否在频道中。除收到 connectionStateDisconnected (1) 状态外,不要再次调用该方法加入频道。 -102:频道名无效。你需要在 channelId 中填入有效的频道名,重新加入频道。 -121:用户 ID 无效。你需要在 uid 中填入有效的用户 ID,重新加入频道。

Implementation

Future<void> joinChannelWithUserAccountEx(
    {required String token,
    required String channelId,
    required String userAccount,
    required ChannelMediaOptions options});