Files
youle_app_ios_v2/docs
joywayerandClaude Opus 4.7 246f215d6f §7.5 重大路径调整:app_* 改为 evaluateJavaScript 覆盖 window.app_xxx
H5 团队新约定:app_*.js 4 个文件由 H5 团队自带在 gamehall.zip 内(含
默认占位值),原生**不再写文件**,只用 WKUserScript(.atDocumentEnd) +
evaluateJavaScript 覆盖 window.app_xxx 全局变量的实际值。

Design 三处大改 (+339/-91 净 +248 行):

§7.5 标题 / 头部:
  - 标题:H5 app_*.js 预注入文件机制 → 修改 H5 端 app_*.js 全局变量值
    (evaluateJavaScript 路径)
  - 新增「2026-06-22 重大方向调整」说明段:3 条理由 + 旧路径降级为
    §7.5.3.legacy

§7.5.2 注入时机:
  - 旧:4 个文件写入时机表
  - 新:两阶段注入表(A 首次 documentEnd UserScript / B 动态
    evaluateJavaScript)+ 为什么必须 documentEnd 不能 documentStart
    (H5 的 var 声明会回退我们的值)+ 为什么不直接走异步 callHandler
    (违反契约原则 A)

§7.5.3 Swift 骨架:
  - AppDataWriter (writeToFile) → AppDataInjector (UserScript +
    evaluateJavaScript)
  - 阶段 A makeInitialUserScript:拼装 (function(){window.app_xxx=...})()
    documentEnd 注入;包含 13 项启动期已知字段
  - 阶段 B injectBattery / injectNetwork:async evaluateJavaScript 单条覆盖
  - Logger.debug 保留所有 key=value 打印(联调可观察性)
  - 旧 AppDataWriter 保留为 §7.5.3.legacy(明示不要实施)

§7.5.4 接入点:
  - configuration.userContentController.addUserScript(阶段 A)
  - addObserver(batteryLevelDidChange) → injectBattery
  - networkMonitor.stateDidChange → injectNetwork
  - bridgedWebView.didFinishOnce 首次补一次 battery + network

§7.5.5 / .6 / .7 / .8 同步调整:差异表 / msext 对比 / 联调路径
  - §7.5.8 路径 2 从「沙盒 cat .js 文件」改为「Safari Web Inspector 看
    window.app_xxx 实时值」(不再写文件无文件可 cat)
  - 加阶段 B 手动触发验证(模拟器 Battery State / Network Link Conditioner)

Contract §4.2 同步:
  - 新增 msext 旧契约 vs 新契约对比表(3 维度:文件来源 / 赋值机制 / 路径感知)
  - 子节标题从「app_battery.js(写到 ...)」改为「H5 zip 包内,含
    app_getbattery 默认占位」+ 更新时机改写为 evaluateJavaScript 时机
  - 「H5 团队保证 zip 内 4 个 app_*.js 存在 + 合理默认占位」约定
  - 修订记录加一行路径调整

Contract §10 验收清单调整:
  - 文件验收:4 个 .js 由 H5 zip 自带(不是原生生成)
  - 新增「原生覆盖生效」验收:Web Inspector 读 window.app_channel 必须
    是 ChannelConfig.plist 实际值,不是 H5 默认占位
  - app_Launchtype 类型修正为数字 0/1(不是字符串)
  - 新增「阶段 B 动态覆盖」验收:模拟器手动触发 battery/network 变化

Plan §6.4 里程碑加新一行记录本次路径调整。

至此 H5↔Native 通讯 5 条路径全部按新契约对齐:
  1. WVJB 异步 callback(22 项)
  2. Native→H5 反向 callback(15 项)
  3. **window.app_xxx evaluateJavaScript 覆盖(15 项)** ← 本次重写
  4. 弹层 settings.* polyfill(4 项)
  5. WKUIDelegate alert/confirm(2 项)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-22 08:19:53 +08:00
..