joinChannel method
加入频道。
该方法让用户加入通话频道,在同一个频道内的用户可以互相通话,多个用户加入同一个频道,可以群聊。 使用不同 App ID 的 App 是不能互通的。如果已在通话中,用户必须调用 RtcEngine.leaveChannel 退出当前通话, 才能进入下一个频道。
成功调用该方加入频道后,本地会触发 RtcEngineEventHandler.joinChannelSuccess 回调; 通信场景下的用户和直播场景下的主播加入频道后,远端会触发 RtcEngineEventHandler.userJoined 回调。
在网络状况不理想的情况下,客户端可能会与 Agora 的服务器失去连接;SDK 会自动尝试重连,重连成功后, 本地会触发 RtcEngineEventHandler.rejoinChannelSuccess 回调。
Note
- 频道内每个用户的 UID 必须是唯一的。如果将
uid
设为0
,系统将自动分配一个 UID。 如果想要从不同的设备同时接入同一个频道,请确保每个设备上使用的 UID 是不同的。 - 请确保用于生成 Token 的 App ID 和
create
方法创建 RtcEngine 对象时用的 App ID 一致。
Parameter token
在 App 服务器端生成的用于鉴权的 Token:
- 安全要求不高:你可以使用控制台生成的临时 Token,详见获取临时 Token。
- 安全要求高:将值设为你的服务端生成的正式 Token,详见从服务端生成 Token。
Parameter channelName
标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
- 26 个小写英文字母 a-z
- 26 个大写英文字母 A-Z
- 10 个数字 0-9
- 空格
- "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "
", "
", "^", "_", " {", "}", "|", "~", ","
Parameter optionalInfo
(非必选项)开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
Parameter optionalUid
(非必选项)用户 ID,32 位无符号整数。建议设置范围:1 到 (2^32-1),并保证唯一性。
如果不指定(即设为 0),SDK 会自动分配一个,并在 RtcEngineEventHandler.joinChannelSuccess 回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
Implementation
@override
Future<void> joinChannel(
String token, String channelName, String optionalInfo, int optionalUid) {
return _invokeMethod('joinChannel', {
'token': token,
'channelName': channelName,
'optionalInfo': optionalInfo,
'optionalUid': optionalUid
});
}