// // VideoRoomHandlers.swift // ylgamehall // // H5 → Native handler stub:声网视频房间 3 件套(createRoom / getVideoinfo / exitRoom)。 // 契约:docs/H5-Native-Contract.md §3.1 [19][20][21] // // 当前业务不使用视频功能(运营确认下线 / 暂未启用),此处仅注册空 handler 维持 // 桥契约:H5 子游戏页若误调不会触发 "bridge handler not found" 错误分支。 // 当未来重新接入 Agora 时(Phase 8 完整实现),把每个 handler 的实现展开即可, // 注册位点不变。 // // 注:契约 §3.2 [13]的 Native → H5 反向 `getVideoinfo(uid 字符串)` 在 Agora SDK // didDecodedRemoteVideo 时由 SDK 适配层触发,与本文件 stub 无关。 // // ⚠️ 仅注册到 SubGameViewController;大厅 WebContainerViewController 不注册 // (msext NewRootVC 也不注册,沿用 msext 行为)。 // import Foundation public enum VideoRoomHandlers { public static func register(on bridge: any BridgeProtocol) { // 【19】createRoom — 创建/加入音视频房间 // 入参:pmw / pmh / top / left / width / height / playerid / roomid // 完整实现:md5(agentinfo+gameinfo+roomid) 算频道名 + Agora joinChannel + 本地画像 bridge.register("createRoom") { _, callback in callback?(.string("createRoom")) } // 【20】getVideoinfo(H5→Native 方向)— 添加/排版远端视频窗 // 入参与 createRoom 几乎相同,缺 roomid(已在房间内) // 完整实现:Agora setupRemoteVideo + 把 view 放到 H5 指定坐标 bridge.register("getVideoinfo") { _, callback in callback?(.string("getVideoinfo")) } // 【21】exitRoom — 离开房间 // 完整实现:Agora leaveChannel + 清理本地/远端 view bridge.register("exitRoom") { _, callback in callback?(.string("exitRoom")) } } }