Phase 8 视频房间 3 件套 stub:createRoom / getVideoinfo / exitRoom
业务暂未启用视频功能,按运营确认仅维持桥契约,让 H5 子游戏调用不报 "no handler"。 - 新增 Source/Bridge/Handlers/VideoRoomHandlers.swift:单一 enum.register 3 个 stub, 各自 callback 字面回包名(与 OpenSaomaHandler 同款 stub 模式) - SubGameViewController.registerBridgeHandlers 挂上 VideoRoomHandlers - 不抽 VideoRoom protocol / NoopVideoRoom 类(违反"不为假设的未来需求设计"原则); 未来重新接入 Agora 时把 3 个 stub 展开实现即可,注册点不变 - Plan §5.6.3 / §5.8.1-8.3 进度已勾选 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
5f3a435180
commit
c77037f407
@@ -592,7 +592,9 @@ Contract Design Plan(本文档)
|
||||
- [x] **6.3** 子游戏 handler 注册(拆散到独立 enum,不抽 `SubGameHandlers` 聚合类):
|
||||
- 14 个与大厅共享 handler 直接复用各自 enum.register
|
||||
- 新增 `Source/Bridge/Handlers/BackGameDataHandler.swift`,仅 SubGameViewController 注册
|
||||
- exitRoom / getVideoinfo / createRoom 等视频房间 handler 留待 Phase 8
|
||||
- 新增 `Source/Bridge/Handlers/VideoRoomHandlers.swift` stub(createRoom / getVideoinfo / exitRoom):
|
||||
业务暂未启用视频功能,仅维持桥契约不让 H5 报 "no handler";
|
||||
未来接 Agora 时把 3 个 stub 展开实现,注册点不变
|
||||
- [x] **6.4** `SwitchOverGameData` handler(大厅 + 子游戏共用):解参 `Gamedirectory` / `gamedownloadurl` / `data` → `AppCoordinator.shared.showSubGame(...)`;节流 / 栈深守门移到 Coordinator,handler 始终回 cb `"SwitchOverGameData"`(msext NewRootVC.m:541-566 等价)
|
||||
- [x] **SceneDelegate**:以 `UINavigationController` 承载大厅,`AppCoordinator.shared.navigationController` 持引;导航栏隐藏 + 禁用边缘 pop 手势
|
||||
- [x] **6.5** `backgameData` handler(仅子游戏 `BackGameDataHandler.swift` 注册):
|
||||
@@ -661,9 +663,9 @@ H5 调 `OpenurlTitleData` 打开弹层 WebView,弹层内 H5 用 `window.settin
|
||||
|
||||
#### 任务清单
|
||||
|
||||
- [ ] **8.1** `Source/VideoRoom/VideoRoom.swift` 协议
|
||||
- [ ] **8.2** `Source/VideoRoom/NoopVideoRoom.swift` 实现(log + 不动)
|
||||
- [ ] **8.3** `SubGameHandlers` 注入 NoopVideoRoom,注册:
|
||||
- [x] **8.1/8.2/8.3** 视频房间 3 件套 stub 已在 Phase 6 commit C 同期落地:
|
||||
- `Source/Bridge/Handlers/VideoRoomHandlers.swift` 直接 enum.register(不抽 protocol/Noop 类,
|
||||
业务暂未启用 Agora,未来接入时把 3 个 stub 展开即可,注册点不变)
|
||||
- `createRoom` stub → `cb("createRoom")`
|
||||
- `getVideoinfo` stub → `cb("getVideoinfo")`
|
||||
- `exitRoom` stub → `cb("exitRoom")`
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// 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"))
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -86,7 +86,9 @@ public final class SubGameViewController: UIViewController {
|
||||
// 子游戏专属:backgameData(退出回大厅 + 反向 callback getWebdata)
|
||||
BackGameDataHandler.register(on: bridge)
|
||||
|
||||
// exitRoom / getVideoinfo / createRoom 等视频房间 handler 留待 Phase 8 接入
|
||||
// 视频房间 3 件套 stub(业务暂未启用,仅维持桥契约不让 H5 报 "no handler")
|
||||
// 未来接 Agora 时把 VideoRoomHandlers 内 3 个 stub 展开实现,注册点不变。
|
||||
VideoRoomHandlers.register(on: bridge)
|
||||
}
|
||||
|
||||
// MARK: - 摇一摇支持
|
||||
|
||||
Reference in New Issue
Block a user