声网服务端网关 SDK 同时支持 int 型用户 ID 和 String 型用户 ID。本文介绍如何使用 String 型用户 ID。
在初始化 IAgoraService
对象时,将 AgoraServiceConfiguration.useStringUid
设为 true。
// 创建 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 频道。
if (connection->connect(options.appId.c_str(), options.channelId.c_str(),
options.userId.c_str())) {
AG_LOG(ERROR, "Failed to connect to声网channel!");
return -1;
}
在初始化 IAgoraService
对象时开启 String 型用户 ID 的设置会在调用 connect
成功连接频道之后生效。因此,在成功连接频道之前,SDK 使用的用户 ID 模式仍然为 int 型。你无法订阅包含数字之外的字符的用户 ID。如果你在成功连接频道之前调用 subscribe 方法订阅了特定 uid,uid 的字符必须仅包含数字。connect 完成之后,你可以订阅包含其他字符类型的用户 ID。
int 型用户 ID 支持的字符集包括:
String 型用户 ID 支持的字符集包括:
String 型用户 ID 能且只能与 String 型用户 ID 互通。如果一个频道内同时存在 String 型用户 ID 和 Int 型用户 ID,会导致未知的错误。
和 Int 型用户 ID 不同,在调用 connect
方法时,你必须给 userId
赋值。设置为 null 会收到报错。
String 型用户 ID 必须是频道内唯一的。