From 47a89aa49ce7437aeff2ea75c3469933cc835a0e Mon Sep 17 00:00:00 2001 From: joywayer Date: Mon, 22 Jun 2026 07:58:02 +0800 Subject: [PATCH] =?UTF-8?q?Contract=20=C2=A74.2=EF=BC=9A=E6=8C=89=E5=8E=9F?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BB=A3=E7=A0=81=E5=85=A8=E9=9D=A2=E4=BF=AE?= =?UTF-8?q?=E8=AE=A2=20app=5F*.js=20JS=20=E6=B3=A8=E5=85=A5=E6=B8=85?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1.17 联调准备时回归原项目(CLAUDE.md「先看原项目」规则), grep daoqi/msext 全部 "var app_" 字面字符串,对照本文档 §4.2 早期记录 发现 4 类硬错误: 1. 多列了不存在的变量 — 原项目代码字面字符串里**根本不写**: - app_gameid grep 0 命中 → 删除 - app_compareCode grep 0 命中 → 删除 2. 文件名与变量名混淆 — msext 文件名不带 get、变量名带 get: - 文件 app_battery.js → 内容 "var app_getbattery=%lf;" (gameController.m:1191 / NewRootVC.m:1706) - 文件 app_network.js → 内容 "var app_getnetwork=%d;" (gameController.m:1198 / NewRootVC.m:1714) 早期文档统一写成 app_battery / app_network 容易让实施者把变量名也 去掉 get,导致 H5 业务读到 undefined → 修正 3. 漏列 6 项真实存在的变量(gameController.m:2160 / NewRootVC.m:1204 / AppDelegate.m:259 字面字符串里都有): - app_version 硬编码 "1" - app_Launchtype 大厅 0 / 子游戏 1(⚠️ L 大写) - app_getwifisignalLevel 硬编码 1(⚠️ wifi 小写、signal/Level 大小写区分) - app_gamename 大厅 = gameStart / 子游戏 = game_name - app_invitationcode tuiguang_id 推广码 / 邀请码 - app_gamesname 独立 app_gamesname.js 文件 (var<两空格>new Array) 4. 大厅 vs 子游戏字面差异之前未注明: - app_Launchtype = 0/1 - app_gamedir:gamedir vs gamefilepath - app_gamestart + app_gamename:gamestart vs game_name 新增"修订记录"小节明示三处修订的代码依据行号,方便未来回溯。 至此 Contract §4.2 与 Design §7.5 完全对齐(15 项变量,全部对应到 daoqi 原项目真实代码行)。Phase 2 实施 AppDataWriter 时按 Contract §4.2 为准,H5 端验收按 Contract 不会再有差异。 Co-Authored-By: Claude Opus 4.7 --- docs/H5-Native-Contract.md | 76 +++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/docs/H5-Native-Contract.md b/docs/H5-Native-Contract.md index face404..e5b34f9 100644 --- a/docs/H5-Native-Contract.md +++ b/docs/H5-Native-Contract.md @@ -690,34 +690,76 @@ _webView.scrollView.showsHorizontalScrollIndicator = NO; - LocalStorage 由 H5 自管(WKWebView 默认走 WebsiteDataStore) - 加载方式:**`loadFileURL:fileURL allowingReadAccessToURL:dirURL`**(file://),不走 HTTP -### 4.2 JS 注入 +### 4.2 JS 注入(**已按原项目代码全面修订** — 见底部"修订记录") -在 `viewWillAppear` 内(每次加载 H5 之前)写出三个文件: +H5 业务通过 `