RTC SDK 开发规则
身份和入会顺序
第三方后端验证自己的用户,选择媒体节点和配置,使用获准 v2 管理 API 创建会议、签发业务主体一次性票据,再向客户端返回 serverUrl、roomId、accessTicket。客户端 SDK join 后检查准入状态;Waiting 不提前采集/发布。入会票据、参会 RTC Token、平台 API Token、档案短票据四者不可交换。一次性票据不能放在分享 URL 或重复消费。
正式建会可使用 idempotencyKey UUID;同参数重试复用,换会议用新 UUID,参数变更按服务端冲突处理。业务 creator 回调转交 SDK 提供的 UUID;跨进程恢复由业务持久化。网络失败先确认现有会议,不能无限重建。Demo 凭据和生产建会幂等键的性质不同,Demo 不代替生产授权。
SDK 与宿主职责
Web/H5 使用 @akstream/rtc-web-sdk 的 AkRtcWebClient;Android/iOS 使用同批原生 SDK;UniApp 使用 AkRtcUniClient 门面及交付的 UTS/原生桥。按各端真实签名接入,不把 Web 方法逐字搬到 Java/Swift。
页面只负责业务身份、用户动作、布局与呈现、平台权限和生命周期转交。SDK 负责媒体与会话、设备、续签/重连、主持控制、白板和附件状态。核心补功能放在公开 SDK 及其桥接,不放在 Demo 私有网络逻辑。宿主不得并行实现信令、PeerConnection 或自动重试。
Web 先注册 onState、onRemoteTrack、onRemoteTrackRemoved,使用 attachRemoteMedia/detachRemoteMedia 绑定按 subscriptionId 管理的独立视图。join 成功且获准后,用户点击调用 startCameraAndMicrophone,将流交给 attachLocalPreview;setTrackEnabled 控制单类轨道,onLocalMediaState 决定按钮实际状态。startScreenShare 必须由用户手势触发,stopScreenShare 不应关闭摄像头。leave 释放会话并清理宿主视图。准确代码见 guides/sdk/web.md。
全功能检查
- 设备:枚举/切换相机、麦克风与输出;采集模式、实际尺寸/FPS、音频路由和统计。目标分辨率与设备实采分开,不能伪造设备能力。
- 媒体:单路本地预览、远端摄像头/屏幕/音频、每路全屏、镜像/旋转、屏幕共享与共享音频。publicationId 区分发布,subscriptionId 区分接收,不按名字合并成员。
- 成员与主持:等候室、准入、邀请、举手、角色/主持交接、成员或全局开麦/视频/共享限制、踢出、锁定和关会;操作按 room-actions.md 的 action/payload,不猜字符串。
- 协作:群聊/私发、白板申请批准收回、绘制/图片、附件上传及查看下载。提交失败或超时不自动重复上传;私发不因回放扩大可见范围。
- 录制与档案:持续录制启停和实际回调、原轨/成员合成/整场导出、真实时间线和缺口、聊天白板回放、附件/白板图片、独立档案授权与打包。宿主实现回放 UI,SDK 提供数据与获准资源。
- 平台已有外部源入会:主持与源资源权限同时满足;外部源不是参会用户,移出不停止其他业务用的流;编码不支持明确反馈。
- 观察台:与普通成员分离,按观察细分权限调用;普通参会或档案票据不能取得全部私聊或观察功能。
会议人数、发布人数、屏幕上限和实例流配额分别判断;额度不足可能只阻止新增发布,不应捏造“入会失败”。结构化错误中 rtc_participant_capacity、rtc_publisher_capacity、rtc_screen_capacity、rtc_screen_already_published 与 stream_capacity 含义不同。
恢复与平台边界
SDK 处理自动续签、前后台和断线恢复。事件实时与重放可能交错,恢复游标以完整 sync-complete 进度为准,不能用最大实时 Sequence 跳过历史。stateAfterSequence 用于避免将旧主持控制重施到新入会会话,聊天/白板历史仍按可见范围回放。业务不另写去重/续签层覆盖 SDK。
Web 媒体采集需可信 HTTPS;移动 WebView 需宿主授权和证书信任。Android 处理系统权限、前后台/前台服务;iOS 屏幕广播需 App Groups/扩展签名和音频会话;UniApp 的桥接需对应基座,类型检查不代表原生真机已运行。小程序按实际 AppID、RTC 组件权限与 SDK 交付能力判断。
档案使用独立 AkRtcArchiveClient/各端对应客户端和资源/动作绑定授权;退会后的访问走业务后端再次授权,不复用已消费入会票据。留存期限、文件清理和会议归档状态以服务端实际返回为准。
同一任务记录源码/SDK/服务版本、编译、运行和双设备验收。检查拒绝设备授权、收权、票据过期、断网恢复、正常离会/踢出、录制回放、附件失败和关闭会议;配置不足、平台不支持、尚未实现、尚未实测逐项写明,不因按钮存在宣布全端通过。