跳转到主要内容
C 接口用返回值表达结果。返回 int 的接口统一使用下面 5 个取值,RTC_OK 为 0,失败一律为负数。

取值说明

RTC_ERROR 是一个笼统的失败码。具体原因用 rtc_get_last_error 取(0.0.9 起),它返回的就是下面两节的 180xxx / 1xxx 错误码。也可以调高日志级别看原因:
日志里会打出更具体的错误,形如 180001: Not in channel 或 1021: ...。这两类码的区别见下面两节。

日志里的 180xxx:SDK 层错误

C 接口的这 5 个返回值只描述”调用层面”的结果,不携带原因。原因用 rtc_get_last_error 取,也会打在日志里,其中以 180 开头的 6 位码是 SDK 自身产生的错误:180 是服务端 / 嵌入式这种接入方式的前缀,后三位是具体错误,各端 SDK 的后三位统一(编号规则见 错误码规则)。SDK 自身错误的原因是英文,请按错误码判断,不要按文案判断。
0.1.0 起错误码全面重排(如”无权发布合成流”由 180004 改为 180040,180004 改为表示 Token 不合法),下表按 0.1.0 及以后的版本列出。旧码与新码的对照见 更新日志 · 0.1.0。
看到 180002(Token 已过期)时先确认不是 Token 复用:每个进程都要单独签发。这一条和下面的服务端 1032 是同一类问题的两种表现。

日志里的 1xxx 等:服务端业务错误码

四位数(≥1000)的码来自服务端,是业务层面的拒绝原因,SDK 原样透传,例如: 完整清单见 服务端 API · 错误码。发布 / 订阅被服务端拒绝时(如 1033 并发已达上限、1035 节点满载),0.1.0 起 rtc_get_last_error 返回服务端原码,不再包成 180300 / 180301。 服务端错误原因文案的语言由 rtc_set_language 决定,不设置时跟随系统语言。
Token 与一次会话绑定,进程离开频道后该会话即失效。复用同一个 Token 起第二个进程会拿到 1032(在 C 侧表现为 RTC_ERROR)—— 每个进程都要单独签发 Token。

返回值检查建议

所有返回 int 的接口都应检查返回值。加入频道这类关键路径失败时必须走清理流程,避免句柄泄漏:
rtc_create / rtc_create_local_track 返回的是指针,失败时为 NULL,判空即可。