joywayerandClaude Opus 4.7 f68b0dba93 Design §7.5:补 H5 app_*.js 预注入文件机制(15 个变量),§3.4.1 polyfill 撤销
按 CLAUDE.md「先看原项目」规则深度审查 daoqi/msext NewRootVC.initJSdata /
gameController.initJSdata / AppDelegate 写入逻辑后发现:

**关键纠正**:H5 在 iOS 9+ 路径下的真实读值机制是 §4.2「写 app_*.js 文件
+ H5 <script src> 同步引入」,不是早期 commit 82bad8a 实现的
§3.4.1 window.settings.getXxx() polyfill(那是 §附录 A 旧桥 JSExport
路径,契约明示「新外壳如最低系统 ≥ iOS 14 可不实现」,本项目最低
iOS 15.6 → 无需实现)。

§3.4.1 处理:标题改为「⚠️ 撤销」+ 完整说明撤销原因;旧 polyfill 代码
骨架保留为 §3.4.1.legacy 作为数据源映射参考(不删除以保 git log 整洁,
也方便 Phase 2 实施者了解 9 项 getter 的等价数据来源)。

§7.5 新章节覆盖 15 个变量(用户列 14 + audit 发现 app_invitationcode):
  - §7.5.1 完整映射表:变量名 / 大厅值 / 子游戏值 / 数据源 / 文件
  - §7.5.2 4 个文件写入时机(一次性 vs 事件驱动)+ 为什么写文件不
    evaluateJavaScript(保证 <script src> 同步引入时机)
  - §7.5.3 AppDataWriter struct Swift 骨架(escape 4 种特殊字符避免
    渠道字段含引号导致 H5 JS 解析错)
  - §7.5.4 WebContainerViewController 接入点:loadFileURL 前 writeInitial
    + writeBattery + writeNetwork;持续监听 batteryLevelDidChange /
    NWPathMonitor 触发增量重写
  - §7.5.5 大厅 / 子游戏 / 弹层 4 维度差异(弹层不写 app_*)
  - §7.5.6 与 msext 6 维度差异表(单一真相 / 转义 / 大小写严格)
  - §7.5.7 §7.5 vs §3.4.1 vs §3.4 OverlayBridge vs §3.2 callback 四条
    路径关系澄清

大小写严格契约:app_Launchtype(L 大写)/ app_getwifisignalLevel(wifi
小写、signal/Level 区分大小写)— 任何拼写错误会让 H5 业务读到 undefined。

至此 H5 端 JS 与原生通讯的完整 5 条路径全部覆盖:
  1. WebViewJavascriptBridge 异步 callback(§5/§8/§3.1,22 项 handler)
  2. Native→H5 反向 callback(§3.2,15 项)
  3. app_*.js 文件预注入全局变量(§7.5,15 项)
  4. 弹层 window.settings 同步 polyfill(§3.4,3 项 + §3.4.2 OpenurlTitleData)
  5. WKUIDelegate alert / confirm(§3.7,2 项)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-22 07:51:13 +08:00
S
Description
No description provided
24 MiB
Languages
Swift 94.5%
Objective-C++ 2.9%
JavaScript 1.8%
C 0.6%
Objective-C 0.2%