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 应隐藏入口或给出明确提示,不要静默成功。