import { RTCType } from '../typings/rtc/type'; import { VRWebViewRTCOptions } from '../typings/rtc/VRWebViewRTCOptions'; import { CoreRTC } from './CoreRTC'; /** * VR WebView RTC 实现 * * 适用于在如视 VR App 的 WebView 或微信小程序环境中进行实时语音通信。 * 通过 JSBridge 与原生 App 通信,实现语音功能。 * * @example * ```typescript * import JSBridge from '@realsee/jsbridge-x' * * const jsBridge = new JSBridge() * const rtc = new VRWebViewRTC({ * jsBridge, * getVoiceSign: async (params) => { * const response = await fetch('/api/get-voice-sign', { * method: 'POST', * body: JSON.stringify(params) * }) * return response.json() * } * }) * * // 加入房间 * await rtc.join({ * voiceId: 'voice-id', * userId: 'user-id', * roomId: 'room-id', * type: RTCType.RealseeVRWebViewRTC * }) * ``` */ export declare class VRWebViewRTC extends CoreRTC { type: RTCType; joined: boolean; micro: boolean; voiceId: string; /** * 保留加入房间参数,用于重连 */ private _joinOptions; private options; /** * 获取 JSBridge 实例 * * @returns JSBridge 协议实例 */ get jsBridge(): import('@realsee/jsbridge-x').JSBridgeProtocol; /** * 创建 VRWebViewRTC 实例 * * @param options 配置选项,包含以下属性: * - jsBridge: JSBridge 实例,必需,用于与原生 App 通信 * - getVoiceSign: 获取语音签名的函数,必需 */ constructor({ jsBridge, getVoiceSign }: VRWebViewRTCOptions); /** * 处理用户音量(内部方法) * * @param userVolumes 用户音量数组 */ private handleUserVolumes; /** * 处理弱网络情况(内部方法) * * @param weakNetwork 是否为弱网络 */ private handleWeakNetwork; /** * 加入语音房间 * * @param options 加入房间的选项 * @param options.voiceId 语音房间ID * @param options.userId 用户ID * @param options.roomId 房间ID * @param options.type RTC类型 * @returns Promise 是否成功加入房间 */ join: (options: { voiceId: string; userId: string; roomId: string; type: RTCType; }) => Promise; /** * 重连 * @returns */ reJoin: () => Promise; /** * 获取 rtc 签名 * @param params * @returns */ private getVoiceSignOrEmitError; /** * 处理小程序的加入房间 * @param options * @returns */ private handleWxMiniProgramWebViewJoin; /** * 处理App WebView的加入房间 * @param options * @returns */ private handleAppWebViewJoin; /** * 加入语音房间,给小程序使用 * @param param0 * @returns */ private joinRoomOrEmitError; /** * 处理加入语音房间结果 * @param res * @returns */ private handleJoinResult; /** * 将错误信息发送出去,并将 joined 置为 false * @param message */ private emitErrorAndSetJoinedFalse; /** * 退出房间 * @returns */ quit: () => Promise; /** * 监测麦克风权限 * @returns */ detectMicro: () => Promise; /** * 修改麦克风状态 * @param flag * @returns */ toggleMicro: (flag?: boolean) => Promise; /** * 震动 */ shock: () => void; }