2024/10/24 19:27:36
使用 String 型用户 ID
声网服务端网关 SDK 同时支持 int 型用户 ID 和 String 型用户 ID。本文介绍如何使用 String 型用户 ID。
-
在初始化
AgoraService
对象时,调用AgoraServiceConfiguration.setUseStringUid(1)
。Java// Creates an AgoraService object
AgoraService service = new AgoraService();
if (null == service) {
System.out.printf("createAndInitAgoraService fail\n");
return;
}
AgoraServiceConfig config = new AgoraServiceConfig();
// Disables the audio device module (Normally we do not directly connect audio capture or playback devices to a server)
config.setEnableAudioDevice(0);
// Enables the audio processing module
config.setEnableAudioProcessor(1);
// Enables video
config.setEnableVideo(1);
// Enables user ID in String format
config.setUseStringUid(1);
int ret = service.initialize(config);
if (ret != 0) {
System.out.printf("createAndInitAgoraService AgoraService.initialize fail ret=%d\n", ret);
return;
}
service.setLogFile("agorasdk.log",10*1024); -
调用
connect
连接声网 RTC 频道。JavaRtcConnConfig ccfg = new RtcConnConfig();
ccfg.setAutoSubscribeAudio(0);
ccfg.setAutoSubscribeVideo(0);
ccfg.setChannelProfile(Constants.CHANNEL_PROFILE_LIVE_BROADCASTING);
ccfg.setClientRoleType(Constants.CLIENT_ROLE_BROADCASTER);
AgoraRtcConn conn = service.agoraRtcConnCreate(ccfg);
if (conn == null) {
System.out.printf("AgoraService.agoraRtcConnCreate fail\n");
return;
}
conn.connect(token, "demo_channel", "1");
订阅用户注意事项
在初始化 AgoraService
对象时开启 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 必须是频道内唯一的。