
joywayerandClaude Opus 4.7
5731588d33
启动期错误处理 v2:撤回降级,splash 错误态 + NWPathMonitor 自动重试
撤回上一 commit 74f6925 的"远端 config 失败就降级进大厅"路径——错过升级
判定 = 用户用旧 IPA 不被强制升级 = 业务风险。新策略:
**远端 config 失败 → 停留 splash 显示错误态**(不弹 modal alert / 不暴露原始 NSError)
行业主流方案:
1. SplashOverlay 扩展错误态 UI(隐藏 label / progress,显示 title +
message + "重试" 主按钮 + "前往系统设置" 次按钮),通过 onRetry /
onOpenSettings closure 与 controller 解耦
2. WebContainerViewController.presentBootError 按 BootErrorKind 分类给出
友好文案(networkOffline / networkTimeout / networkCannotReach /
localResourceMissing / unknown)
3. 启动期独立 NWPathMonitor,仅在"从无网变有网"时静默自动重试一次
(初始 nil 状态不触发,避免死循环;用户切到 Wi-Fi 后无需手动操作)
4. runBootPipeline 重新进入时 stopBootRetryWaiting + splash.hideError
保证多次重试干净(防止 monitor 泄漏)
进大厅的必要条件(恢复严格):
- ResourceUnzipper.ensureReady 成功(本地 H5 zip 就位)
- RemoteConfigClient.fetch 拿到正确 config(升级判定可执行)
- 本地 appVersion >= 远端(否则走 IPA 升级 modal alert)
- showmessage 为空(否则走运营 modal alert)
- LobbyZipUpgrader 完成(含跳过升级 / 真升级两路径)
业务流程信号(operationalMessage / ipaUpgradeRequired)继续用 modal alert
(这两类不是错误,是产品决策的弹窗永停);技术错误(网络/解压/写文件等)
统一进 splash 错误态 + 自动重试。
raw error 仍 print 到 Xcode console(含 NSURLErrorDomain code 等开发期
排查信息),用户视角永不暴露技术细节。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-23 06:47:04 +08:00
..
2026-06-22 18:28:08 +08:00
2026-06-23 02:04:46 +08:00
2026-06-22 21:30:03 +08:00
2026-06-23 02:01:29 +08:00
2026-06-23 06:47:04 +08:00