使用 String 型用户 ID
- C++
更新时间不可用
了解如何在 RTC 服务端 SDK 中字符串型用户 ID,包括适用场景、配置步骤、实现要点和注意事项。
声网服务端网关 SDK 同时支持 int 型用户 ID 和 String 型用户 ID。
本文介绍如何使用 String 型用户 ID。
实现方法
-
在初始化
IAgoraService对象时,将AgoraServiceConfiguration.useStringUid设为true。C++ // 创建 IAgoraService 对象 auto service = createAgoraService(); // 初始化 IAgoraService 对象 agora::base::AgoraServiceConfiguration scfg; // 设置声网 App ID scfg.appId = appid; // 是否开启音频处理模块。本文设为开启。 scfg.enableAudioProcessor = enableAudioProcessor; // 是否开启音频设备模块。此设置不适用于服务端。本文设为关闭。 scfg.enableAudioDevice = enableAudioDevice; // 是否开启视频。本文设为开启。 scfg.enableVideo = enableVideo; // 是否允许 String 型用户 ID(字符可以是数字、字母或特殊符号)。 // 本文设为 true,使用 String 型用户 ID(字符可以是数字、字母或特殊符号)。 scfg.useStringUid = enableuseStringUid; if (service->initialize(scfg) != agora::ERR_OK) { return nullptr; } -
调用
connect连接声网 RTC 频道。C++ if (connection->connect(options.appId.c_str(), options.channelId.c_str(), options.userId.c_str())) { AG_LOG(ERROR, "Failed to connect to the channel!"); return -1; }
订阅用户注意事项
在初始化 IAgoraService 对象时开启 String 型用户 ID 的设置会在调用 connect 成功连接频道之后生效。因此,在成功连接频道之前,SDK 使用的用户 ID 模式仍然为 int 型。你无法订阅包含数字之外的字符的用户 ID。如果你在成功连接频道之前调用 subscribe 方法订阅了特定 uid,uid 的字符必须仅包含数字。connect 完成之后,你可以订阅包含其他字符类型的用户 ID。
其他注意事项
-
int型用户 ID 支持的字符集包括:- 10 个数字 0-9
-
String型用户 ID 支持的字符集包括:- 26 个小写英文字母 a~z
- 26 个大写英文字母 A~Z
- 10 个数字 0-9
- 空格
- "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
-
String型用户 ID 能且只能与String型用户 ID 互通。如果一个频道内同时存在String型用户 ID 和int型用户 ID,会导致未知的错误。 -
和
int型用户 ID 不同,在调用connect方法时,你必须给userId赋值。将其设为null会报错。 -
String型用户 ID 必须是频道内唯一的。