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。

全功能检查

会议人数、发布人数、屏幕上限和实例流配额分别判断;额度不足可能只阻止新增发布,不应捏造“入会失败”。结构化错误中 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/服务版本、编译、运行和双设备验收。检查拒绝设备授权、收权、票据过期、断网恢复、正常离会/踢出、录制回放、附件失败和关闭会议;配置不足、平台不支持、尚未实现、尚未实测逐项写明,不因按钮存在宣布全端通过。

完整 Skill 文件目录