AKStream.Next · 文档中心

iOS 原生 RTC SDK 函数参考

iOS 原生 RTC SDK 函数参考

适用 同批交付 Swift SDK/XCFramework。AkNativeRtcClient 在主 actor 上工作,负责设备会话、音视频轨道、WHIP/WHEP、信令和恢复;UIKit/SwiftUI 宿主负责按钮、权限提示、渲染视图、音频路由与 ReplayKit 扩展。先按iOS 接入步骤安装依赖、配置签名和系统采集权限。

let rtc = AkNativeRtcClient(localRenderer: previewRenderer, delegate: self)
rtc.setInitialMediaEnabled(microphone: false, camera: false)
rtc.joinWithAccessTicket(baseURL: serverURL, roomID: roomID,
                             accessTicket: oneUseTicket, passcode: "")

serverURL 是 iPhone 可验证证书的 HTTPS 地址,不能使用 Mac 的 127.0.0.1。票据来自业务后端,只能消费一次。@MainActor 方法从对应 actor 调用;异步抛错和 delegate 错误要保留 HTTP 状态。

会话、主持与录制

函数 入参 结果 特殊情况
AkNativeRtcClient(localRenderer:delegate:) 本机 RTCVideoRenderer、AkNativeRtcClientDelegate 客户端对象 SDK监听前后台;一场活动会议只保留一份客户端。
joinWithAccessTicket(baseURL:roomID:accessTicket:passcode:) 服务地址、会议号、一次性票据、口令(无口令用空串) delegate 的 didJoin 或 didFailHTTP/didFail 等候室未准入时不能发布;票据不可重放。
createMeeting(settings:creator:) 设置字典、业务后端 async throws 建会回调 含 roomId/accessTicket 的字典 回调应做业务认证、幂等重试;管理凭据不交给 App。
listMembers()、participantForPublication(_:) 后者传发布 ID 成员列表事件 / 成员 ID 或 nil 成员和设备会因重连变化;画面以发布 ID 区分。
performRoomAction(_:payload:) 白名单动作及字段 async throws -> Any 服务端再次校验角色、设备与权限;403 不能靠重试绕过。
startContinuousRecording()、stopContinuousRecording(recordingId:)、getContinuousRecording() 停录需本次任务 ID async throws 状态;无任务时为空 仅当前主持人启停;didChangeContinuousRecording 报告活动状态。
leave()、close() 无 设备离会 / 对象结束 页面销毁和路由切换走一致清理;被踢后换新业务授权。
listDemoRooms(baseURL:)、createDemoMeeting(...)、issueDemoAccessTicket(...) 独立测试环境参数 Demo 房间/票据 不作为正式业务用户系统。

getContinuousRecording() 查询的是当前活动任务,不是历史录像。会后查询和资源 URL 使用独立档案 SDK及 view/play/download 票据。主持移交后旧主持人立即失去主持专属录制权限。

本机媒体、摄像头和共享

函数 入参 结果 特殊情况
setInitialMediaEnabled(microphone:camera:) 首次入会意图 初始化麦克风/相机状态 系统授权、会议能力和主持策略仍会限制实际发布。
setMicrophoneEnabled(_:)、setCameraEnabled(_:) 布尔值 经 didChangeLocalMedia 反馈 不能以按钮点击成功替代远端实际收帧/声音。
listCameras()、switchCamera(to:) 可选摄像头 ID AkRtcCameraDevice 列表 / didSwitchCamera 位置用 AVCaptureDevice.Position;设备列表可能在授权或连接变化后更新。
setRemoteAudioVolume(publicationID:volume:) 发布 ID、0~1 音量 本机播放改变 不改变对方麦克风,也不影响录制原轨。
setForeground(_:) 前后台布尔值 采集生命周期变化 SDK已监听系统通知;自定义场景转场时可显式同步,避免相机资源被系统占用。
getSupportedVideoModes()、getEndpointInfo() 无 视频模式与终端参数字典 能力值不是当前实际帧率;上报不含硬件唯一标识。
makeCameraPictureInPicture(sourceView:) 摄像头画面的 UIView AkRtcCameraPictureInPicture 或抛错 画中画是本机显示能力,不会新增发布或改录像。
prepareBroadcast(appGroup:)、broadcastIsActive()、stopBroadcastShare() App Group 标识 / 无参 ReplayKit 准备、状态、停止 需要已签名的广播扩展和共享 App Group;系统可随时结束共享。

屏幕共享与摄像头是独立流。ReplayKit 扩展负责系统采集,主 App 只传受信任的短时会话上下文;不要把票据写进共享文件日志或交给其他 App。

聊天、白板、附件与事件

函数 入参 结果 特殊情况
sendChatMessage(_:targetParticipantID:) 文本、可选私发成员 ID didReceiveChatMessage/错误 私发消息不进入公共回放。
uploadAttachment(data:fileName:contentType:caption:targetParticipantID:)、uploadAttachment(fileURL:caption:targetParticipantID:) 字节或本地文件 URL、类型/说明/目标 didUploadAttachment 或错误 最终提交会复核当前设备、会议与私发权限;大文件优先文件 URL。
uploadWhiteboardImage(fileURL:) 本机图片文件 URL async throws -> AkRtcChatAttachment 上传图片素材后还需提交白板对象;收回书写权会阻止最终使用。
downloadAttachment(_:)、downloadAttachmentFile(_:)、releaseAttachmentFile(_:) 获准附件 / 本机临时文件 URL Data、临时文件 URL / 释放 大文件用文件接口;用完释放 SDK 临时文件。
attachmentPreview(_:maxDimension:) 图片附件、像素边长上限 可预览 UIImage? 非图片或解码失败时可能为空;PDF/视频由宿主选择合适预览器。
sendHandRaised(_:)、sendReaction(_:) 举手布尔值、反应名 会议事件 不改变成员发布权限。

delegate 关键回调:didReceiveRemoteVideo/didRemoveRemoteVideo、didReceiveRemoteAudio/didRemoveRemoteAudio 管每路视图;didChangeLocalMedia 与 didChangeMediaPermission 管按钮;didChangeCapabilities 管主持 UI;didReceiveWhiteboardEvent/didReceiveChatMessage 管协作;didChangeContinuousRecording 管录制提示;didFailHTTP 保留状态码;nativeRtcClientDidLeave 触发最终清理。旧会话事件不能复活新会话的权限或画面。