StatusCode:librtc 本地状态码映射后的 Android 错误码。cn.seastart.rtc.error:Android SDK 主动产生的102xxx统一语义错误码。
Int。librtc 本地错误映射为 Android 102xxx 错误码;后端业务码保留原值。HTTP 库和流媒体厂商错误仍可能返回其他数值,调用方应保留未知错误码的兜底处理。
错误文案 message
从 2.0.36 起,RTCClientEvent.onJoinFailed(...) 与 RTCResultListener.onFail(...) 增加 message: String 参数。后端错误有可用文案时,message 可提供后端返回的内容。可通过 RTCEngine.setLanguage(...) 设置请求语言;实际文案以后端返回为准。设置为 RtcLanguage.SYSTEM 时,请求跟随系统语言。
SDK 自产错误和 librtc 本地错误的 message 为空字符串;诊断详情仅用于日志。后端返回的错误码与提示按来源原样透传,不根据错误码范围判定来源。非空 String 回调遇到后端 null 提示时返回空字符串,不补写文案。应用可按错误码为无提示的失败提供本地化文案。
HTTP 非 2xx 保留原始状态码和状态消息;没有 HTTP 状态码时,请求超时返回 102007,普通网络失败返回 102006,解析失败、缺少 code 或空响应返回 102011,提示为空。取消请求仍走取消回调。
RTCEngineEvent.onError(...) 的 message 为可空类型,参见 RTCEngineEvent。
librtc 状态码 StatusCode
下表对照 2.0.35 与 2.0.36 的公开枚举值;新值自 2.0.36 起生效。升级时若应用写死了旧数值,应改用新值,优先引用枚举常量。
NotInitialized 与 MediaNotInitialized 共用 102024;NotFound 与 RtcErrorCode.USER_NOT_FOUND 共用 102204。
2.0.38 统一错误码 RtcErrorCode
从 2.0.38 起,原 7 个分域错误码对象合并为 cn.seastart.rtc.error.RtcErrorCode。以下列出全部 40 个常量;应用升级时应同步修改常量引用和本地化映射。
从 2.0.37 迁移
旧102001 的权限含义迁移到 102042;新 102001 表示不在频道,不能沿用旧的硬编码提示。下表的新常量均属于 RtcErrorCode。
错误目录查询
RtcErrorCatalog.find(code) 只按数值查询 SDK 已定义的错误描述,不能据此判断错误来源。未收录的错误码返回 null;StatusCode.NotFound 与 SDK 的 USER_NOT_FOUND 同为 102204,查询该值会命中 USER_NOT_FOUND。
RtcErrorDescriptor 字段:
RtcErrorCatalog.all 返回当前 SDK 的全部自产错误描述。RtcErrorModule 领域及预留范围如下:
可调用
RtcErrorModule.owns(code) 判断一个 SDK 自产错误是否落在该领域的预留号码范围内;这不等同于判断错误是否已被 RtcErrorCatalog 正式定义。
回调处理建议
RTCClientEvent.onJoinFailed(channel, statusCode, message):处理入会失败。RTCResultListener.onFail(code, message):处理具体异步操作失败。RTCEngineEvent.onError(channelId, errorCode, message):处理 Engine 阻断操作和全局错误。RTCClientEvent.onDisconnected(channel, leaveReason, statusCode, message):处理频道不可恢复断连。
message。不要只依赖枚举或 RtcErrorCatalog,否则 SDK 尚未认识的新上游错误会丢失。