启动文字提示,h5调试加入
This commit is contained in:
@@ -267,7 +267,8 @@ final class ExternalSubscriptions {
|
||||
bridge?.call("getnetwork", data: .string(state.rawValue), callback: nil)
|
||||
}
|
||||
lifecycle.onChange = { [weak bridge] state in
|
||||
bridge?.call("appservice", data: .string(state == .background ? "1" : "2"), callback: nil)
|
||||
// 值错位沿用历史 msext WKWebView 路径:背景="2" / 前台="1"
|
||||
bridge?.call("appservice", data: .string(state == .background ? "2" : "1"), callback: nil)
|
||||
}
|
||||
battery.start(); network.start(); lifecycle.start()
|
||||
// 立即派发一次,补齐暂停期间的状态
|
||||
@@ -1069,18 +1070,20 @@ func sceneDidBecomeActive(_ scene: UIScene) {
|
||||
}
|
||||
|
||||
// LobbyHandlers / SubGameHandlers 内监听并转桥
|
||||
// 注:契约值与 NSNotification 字面语义相反,沿用 msext WKWebView 路径历史。
|
||||
// 真·进入后台 → "2";真·回到前台 → "1"。详见 Contract.md §3.2 `appservice` 值错位说明。
|
||||
notifications.observe(.appDidEnterBackground) { [bridge] _ in
|
||||
bridge.call("appservice", data: .string("1"), callback: nil) // 契约:"1"=后台
|
||||
bridge.call("appservice", data: .string("2"), callback: nil) // 契约:进入后台="2"
|
||||
}
|
||||
notifications.observe(.appDidBecomeActive) { [bridge] _ in
|
||||
bridge.call("appservice", data: .string("2"), callback: nil) // 契约:"2"=前台
|
||||
bridge.call("appservice", data: .string("1"), callback: nil) // 契约:回到前台="1"
|
||||
}
|
||||
```
|
||||
|
||||
**0.3s 节流决策**:旧外壳在 `applicationDidBecomeActive` 里设了 `flag=NO` + 0.3s 后恢复,防止双重触发。新外壳**默认不要这个节流**,理由:
|
||||
1. 节流的根因是旧代码在 `applicationDidBecomeActive` 内被多处触发,新外壳只有 SceneDelegate 一处发通知
|
||||
2. 测试如果证实双触发,加节流是 1 行代码的事(`DispatchQueue.asyncAfter`),不是架构改动
|
||||
3. H5 端通常对重复 `appservice("2")` 是幂等的(就是刷新 UI 状态)
|
||||
3. H5 端通常对重复 `appservice("1")`(回前台)是幂等的(就是刷新 UI 状态)
|
||||
|
||||
如真机回归发现 H5 双触发产生问题,在 LobbyHandlers 内加 throttle 即可,不污染 SceneDelegate。
|
||||
|
||||
@@ -1253,7 +1256,8 @@ extension BridgeProtocol {
|
||||
}
|
||||
|
||||
func callAppService(_ state: AppState) {
|
||||
call("appservice", data: .string(state == .background ? "1" : "2"), callback: nil)
|
||||
// 值错位沿用历史 msext WKWebView 路径:背景="2" / 前台="1"
|
||||
call("appservice", data: .string(state == .background ? "2" : "1"), callback: nil)
|
||||
}
|
||||
// ... 15 个全列出
|
||||
}
|
||||
@@ -2231,11 +2235,12 @@ private func runBootPipelineSteps() async throws {
|
||||
bridge.call("getnetwork", data: .string("\(code)"), callback: nil)
|
||||
}
|
||||
// appservice 无对应 app_* 全局变量,只走 bridge.call
|
||||
// 值错位沿用历史 msext WKWebView 路径:背景="2" / 前台="1"
|
||||
AppLifecycleObserver.shared.onBackground = {
|
||||
bridge.call("appservice", data: .string("1"), callback: nil)
|
||||
bridge.call("appservice", data: .string("2"), callback: nil)
|
||||
}
|
||||
AppLifecycleObserver.shared.onForeground = {
|
||||
bridge.call("appservice", data: .string("2"), callback: nil)
|
||||
bridge.call("appservice", data: .string("1"), callback: nil)
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -2877,12 +2882,13 @@ public struct DeviceHandlers {
|
||||
networkMonitor.start()
|
||||
|
||||
// 【4】 appservice — App 前后台切换
|
||||
// 数据:字符串 "1"=进入后台 / "2"=回到前台(命名错位,沿用历史)
|
||||
// 数据:字符串 "2"=进入后台 / "1"=回到前台(值错位沿用 msext WKWebView 路径历史,
|
||||
// 参 Contract.md §3.2 `appservice` 值错位说明,以及原 NewRootVC.m:1773/1782)
|
||||
appLifecycle.onBackground = { [weak bridge] in
|
||||
bridge?.call("appservice", data: .string("1"), callback: nil)
|
||||
bridge?.call("appservice", data: .string("2"), callback: nil)
|
||||
}
|
||||
appLifecycle.onForeground = { [weak bridge] in
|
||||
bridge?.call("appservice", data: .string("2"), callback: nil)
|
||||
bridge?.call("appservice", data: .string("1"), callback: nil)
|
||||
}
|
||||
appLifecycle.start()
|
||||
}
|
||||
@@ -4263,7 +4269,7 @@ extension BridgeProtocol {
|
||||
func callGetPhoneInfo(_ info: [String: String]) { call("getphoneinfo", data: .object(info.mapValues(BridgeData.string)), callback: nil) }
|
||||
func callGetBattery(_ level: Float) { call("getBattery", data: .string(String(format: "%.2f", level)), callback: nil) }
|
||||
func callGetNetwork(_ state: NetworkState) { call("getnetwork", data: .string(state.rawValue), callback: nil) } // "1"/"2"/"3"
|
||||
func callAppService(_ s: AppLifecycleState) { call("appservice", data: .string(s == .background ? "1" : "2"), callback: nil) }
|
||||
func callAppService(_ s: AppLifecycleState) { call("appservice", data: .string(s == .background ? "2" : "1"), callback: nil) } // 值错位沿用 msext WKWebView 路径
|
||||
func callShakeEnd() { call("shakeEnd", data: nil, callback: nil) }
|
||||
func callGetLocationInfo(_ d: LocationPayload) { call("getlocationinfo", data: .object(d.dict), callback: nil) } // 字段见契约 §3.2 表B
|
||||
func callGameUIPlayVoice(_ user: String) { call("gameui_play_voice", data: .string(user), callback: nil) }
|
||||
|
||||
Reference in New Issue
Block a user