UniApp RTC SDK 函数参考

适用 同批交付 akstream-rtc 插件。普通 uni-app 与 uni-app x 使用 AkRtcUniClient 门面;Web 目标经 createWebAdapter 复用 Web SDK,Android/iOS 原生目标经 createNativeAdapter 和 UTS 插件。原生模块必须装入自定义基座,只在标准基座编译通过不等于真机能运行。先读UniApp 接入步骤。

import { AkRtcUniClient, createNativeAdapter } from '@akstream/rtc-uniapp-sdk'
const adapter = createNativeAdapter(nativeBridge, { serverUrl, onEvent: event => renderEvent(event) })
const rtc = new AkRtcUniClient(adapter, event => renderEvent(event))
await rtc.join({ roomId, accessTicket, microphone: false, camera: false })

业务后端提供一次性 accessTicket;不要把长期平台 API Token 打进 App。AkRtcUniError 含 code、可选 feature/HTTP status。先用 getFeatureSupport 判断该目标平台是否真正支持功能,configurationRequired 表示还缺原生配置,不应把按钮当成已经可用。

门面、会话与录制

方法 入参 返回 特殊情况
new AkRtcUniClient(adapter?, onEvent?) 平台适配器、事件处理函数 无 UI 客户端 一场活动会议持有一个实例;原生目标需自定义基座。
getFeatureSupport(feature)、getFeatures() RtcFeature 或无参 supported/unsupported/configurationRequired/notImplemented 与原因 仅表明平台适配能力,服务端仍会按角色和房间权限拒绝操作。
join({roomId,accessTicket,passcode?,microphone?,camera?}) 房间、一次性票据、初始媒体意图 入会/等候结果 Waiting 时不要开放采集;票据不可重放。
createMeeting(settings, creator)、createDemoMeeting(settings) 业务创建回调或 Demo 设置 roomId/accessTicket 正式建会由业务后端认证并处理幂等;Demo 入口仅用于测试。
leave()、close() 无 Promise<void> leave 退出当前设备;close 关闭适配器和订阅,页面卸载时调用。
startContinuousRecording()、stopContinuousRecording(recordingId)、getContinuousRecording() 停录需要录制 ID 当前状态或无活动任务 主持人启停,普通成员可查询;recordingState 事件用于宿主显示。
invoke(feature, operation, payload?) 功能名、适配器操作名、JSON 数据 操作实际结果 高级扩展入口;先核对 getFeatureSupport,未知操作不能绕过平台限制。

原生桥 roomAction 先收到“请求已接收” ACK,再等待带同一 requestId 的 roomActionResult 才完成 Promise;离会或关闭时未完成请求取消。ACK 不等于服务端已执行成功,403 必须保留给宿主处理。会议控制动作列出可用动作及 payload。

设备、媒体与显示

方法 入参 返回 特殊情况
setMicrophoneEnabled(enabled)、setCameraEnabled(enabled) 布尔值 实际操作结果 主持收权、系统拒绝或网络异常都可能让目标与实际不同;听状态事件。
getMicrophones()、setMicrophoneDevice(deviceId) 设备 ID 设备列表 / 切换结果 设备名称依赖系统授权,ID 不作跨会议身份。
getCameras()、switchCamera(deviceId?) 可选相机 ID 列表 / 切换结果 前后摄切换受原生采集生命周期约束。
getAudioOutputs()、setAudioOutput(deviceId) 输出设备 ID 列表 / 实际路由结果 蓝牙、扬声器与 WebView 输出能力不同,先看支持状态。
startScreenShare()、stopScreenShare() 开始需平台系统授权 共享状态 iOS ReplayKit/Android MediaProjection 的系统授权由宿主处理;屏幕是独立流。
getVideoModes()、setVideoQuality(targetParticipantId, quality) 成员 ID;{width,height,frameRate} 候选/目标质量结果 目标不能保证实际编码尺寸,服务端还会检查主持权限。
getEndpointInfo()、getPublicationStats() 无 终端参数 / 发布统计 统计用于排障,不包含硬件唯一标识,也不证明已落盘录像。
toggleFullscreen(publicationId?)、exitFullscreen() 可选发布 ID 全屏结果 只控制宿主展示,不改变订阅或录像。

协作、适配器与档案

方法 入参 返回 特殊情况
sendChat(text, targetParticipantId?) 文本、可选私发成员 消息操作结果 私发仅发送者和目标可见,回放不会将其公开。
sendReaction(reaction)、setHandRaised(raised) 反应名 / 布尔值 会议事件 不授予媒体或白板权限。
createWebAdapter(client, views?) Web SDK 客户端、可选全屏视图桥 RtcAdapter H5/WebView 使用,媒体仍由 Web SDK 管理。
createNativeAdapter(bridge, {serverUrl,onEvent?}) 原生 UTS 桥与事件函数 带 clientId 的 RtcAdapter clientId 供原生视图绑定;关闭时 disposeRtcClient。
createUniArchiveClient({baseUrl,accessProvider,request?}) HTTPS 地址、按会议/动作取票函数、可选传输函数 无 UI 档案客户端 会后可单独创建;方法与 Web 档案 SDK一致。

RtcNativeBridge 的 createRtcClient 返回原生 clientId;invokeRtcClient(id,operation,payloadJson,callback) 回传 accepted/errorCode/message/payloadJson;getRtcFeatures(id) 返回平台支持列表;disposeRtcClient(id) 释放。页面不要拼接 WHIP/WHEP 地址,也不要把桥接 ACK 当最终业务结果。UniApp x 的 requestRtcArchive 动作和短时票据规则见档案函数参考。

RtcFeature 的公开分类包括入会、摄像头、麦克风、远端媒体、切相机、画面变换、音频输出、投屏、聊天/附件/白板、主持治理/准入、录制/邀请、举手/反应、发言、设备选择、质量、统计和建会。先探测再展示操作;notImplemented 应隐藏入口或给出明确提示,不要静默成功。

完整 Skill 文件目录