声网服务端网关 SDK 同时支持 int 型用户 ID 和 String 型用户 ID。本文介绍如何使用 String 型用户 ID。
在初始化 AgoraService
对象时,调用 AgoraServiceConfiguration.setUseStringUid(1)
。
SDK.load(); // ensure JNI library load
// 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 频道。
RtcConnConfig 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 支持的字符集包括:
String 型用户 ID 支持的字符集包括:
String 型用户 ID 能且只能与 String 型用户 ID 互通。如果一个频道内同时存在 String 型用户 ID 和 Int 型用户 ID,会导致未知的错误。
和 Int 型用户 ID 不同,在调用 connect
方法时,你必须给 userId
赋值。设置为 null 会收到报错。
String 型用户 ID 必须是频道内唯一的。