跳转到主要内容
0 代表成功,非 0 都是错误。 错误码分两类:4~5 位的是服务端返回的业务错误码,6 位的是客户端 SDK 自己产生的错误码。6 位码的结构是 端前缀 + 3 位低位码,低 3 位按本页的统一码表分配,同一个低位码在各端含义相同。

怎么读一个错误码

所以看到 102231 和 106231,读作:同一个错误(无摄像头权限),分别来自 Android 端和 Web 端。

端侧类型

Swift SDK 同时支持 iOS 和 macOS,按运行平台使用 103 或 105 前缀。

按码判断,不要按文案

  • 判断错误类型只看错误码。SDK 自身的报错文案一律是英文,只给开发者和日志看,会随版本调整;不要拿它做分支判断,也不要直接展示给终端用户
  • 需要给终端用户看的提示,请按错误码自行映射。各平台错误码页的「建议给用户的提示」列给出了参考文案
  • 跨端对比同一类错误时,可以只比低 3 位(各端 SDK 提供 baseCode 之类的字段,具体见各平台错误码页)

language 参数

各端 SDK 提供 language 设置(名称以各端接口文档为准,如 Web 的初始化参数 language、C SDK 的 rtc_set_language):
  • 取值为语言标签,如 zh-CN、en。不设置时跟随系统语言,取不到时为中文
  • SDK 请求服务端时带上 Accept-Language,服务端业务错误(1000–99999)的文案随之返回中文或英文
  • SDK 自身的报错(6 位码)固定为英文,不受 language 影响
  • iOS(Objective-C)自 RTCEngineKit 3.2.1 起提供 RTCEngineKit.language(3.2.0 中 RTC 层请求不带 Accept-Language)
所以同一个应用里同时看到中文和英文的报错是正常的:前者来自服务端,后者来自 SDK。

统一码表(低 3 位)

号段:000–099 通用语义;200–299 频道 / 设备细分;300–349 流媒体。 一种语义只有一个码,各端遇到同一场景用同一个码。不是每个端都会用到全部的码,某端实际会产生哪些码见该端的错误码页。 几个容易混淆的码,按「最具体的原因优先」:
  • 媒体连接创建失败、或进入 failed / closed → 015,不管发生在发布、订阅还是加入频道阶段
  • 正在重连、稍后可重试 → 014;引擎已被关闭或销毁 → 023
  • 流媒体引擎未连接(且不在重连中)时发布 / 订阅,或被拒绝、协商失败且没有更具体的码 → 300 / 301
  • 当前环境不支持 → 032,不用 018(采集失败)

各端按新码发版的进度

本表是 2026-09-30 定稿的第 2 版,各端以自己按新码发版的版本为准。尚未发版的端,仍以该端错误码页列出的码为准。

旧码 → 新码对照

旧版通用码 100001–100012

旧版部分端(iOS Objective-C、Windows 等)对外的 100xxx 通用码取消,改为「本端前缀 + 低 3 位」。例如旧的 100008(令牌失效)变为「本端前缀 + 004」。该端按新码发版后生效。

已按新码发版的端

其它端(Android、Windows)的旧码对照,随该端按新码发版时在其更新日志中给出。

排查时怎么用

各平台完整错误码表: Web · Android · Windows · Swift · iOS · 鸿蒙 · C · Python
C SDK 分两层看。 它的接口返回值是 0 / -1 / -2 / -3 / -4 这样的简单状态值,只表达调用层面的结果、不含原因;具体原因用 rtc_get_last_error 取,也会打在日志里,那里既有 SDK 自身的 180xxx,也有服务端透传的 1xxx。见 C SDK 错误码。

与 SMeeting 的区别

同一套规则,只是业务层号不同:SRTC 用 10,SMeeting 用 20,两层的低 3 位码是两套独立的表。 如果你用的是 SMeeting,会同时看到两类错误码:20Nxxx 来自会议层,10Nxxx 来自底层 SRTC(会议层原样透传,便于定位)。见 SMeeting 错误码规则与总表。