SMeetingError,一个带语义的 Swift 枚举,同时提供整数错误码。
- 用
switch按语义分支处理 - 用
error.code拿到整数错误码,方便日志与工单排查 - 用
error.message拿到纯文本描述 error.localizedDescription输出"<code>: <message>"
错误清单
错误码规则
SMeetingError.code 返回的是拼接后的完整错误码:
- 客户端错误(上表中客户端码小于 1000 的那些)会加上平台前缀,拼成 6 位数:iOS 前缀
203,macOS 前缀205 - 服务端透传错误(
apiError且服务端码不小于 1000)原样保留,不加前缀
这样一眼就能区分「客户端自己拦下来的」和「服务端返回的」。
unauthorized 的常见来源
这是最容易遇到的一个错误,几乎都来自房间策略:
建议在 UI 上根据
RoomInfo 提前把按钮置灰,而不是让用户点了才收到报错。
推荐的处理方式
- 除了
SMeetingError,底层音视频层也可能抛出自己的错误类型(例如采集失败、连接失败),所以catch兜底分支不要省 - 面向最终用户提示时优先用
error.message;写日志时用error.localizedDescription,它带错误码 SMeetingError遵循Equatable,可以直接和具体 case 比较
不会抛错的接口
以下接口设计成不抛错,可以放心直接调用,重复调用或状态不匹配时会被安全忽略:logout()exitRoom()closeMic()/closeCamera()/stopShare()disableIm()toggleRemoteAudioMute(_:)getRoomInfo()/getWhiteBoard()/getUsersInfo()/getUsersInfoList()/getRemoteVideoTrack(uid:desc:)/getDevices(kind:)