优化冷启动流程:Launch Screen 对齐 Splash,仅阻塞 rolePermissions。
移除 SplashCoordinator,bootstrap 期间用 SplashView 覆盖避免空白闪屏,其余账号数据改为后台补充刷新。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -2,32 +2,36 @@
|
||||
|
||||
## 模块职责
|
||||
|
||||
Splash 模块负责冷启动时的品牌启动页展示,对齐 Android `SplashActivity` + `activity_splash.xml` 的视觉规范。
|
||||
Splash 模块负责冷启动品牌展示,与系统 Launch Screen 保持相同视觉,并在 bootstrap 完成前避免空白页或登录页闪屏。
|
||||
|
||||
该模块不处理登录、隐私协议或远程配置,只承担启动阶段的品牌展示和时序控制。
|
||||
冷启动恢复登录态由 `SessionBootstrapper` 负责;`SplashView` 仅覆盖 bootstrap 阻塞阶段,不做固定时长品牌停留。
|
||||
|
||||
## 核心对象
|
||||
|
||||
- `SplashView`:展示白底、180pt Logo、「随心瞰 / 商家版」文案。
|
||||
- `SplashCoordinator`:并行执行 `SessionBootstrapper.restore`,bootstrap 完成后结束 Splash(无固定最短展示时长)。
|
||||
- `SplashLogo` / `LaunchBackground`:启动页图片与背景色资源,同时用于系统 `UILaunchScreen`。
|
||||
- `SplashView`:冷启动 bootstrap 期间展示的品牌页,与 Launch Screen 布局一致。
|
||||
- `SplashTypography`:启动页标题/副标题字号与 UIKit 字体,供 `SplashView` 与 `Launch Screen.storyboard` 对齐。
|
||||
- `SplashLogo` / `LaunchBackground`:启动页图片与背景色资源。
|
||||
- `SessionBootstrapper`:冷启动恢复登录态,阻塞等待 `rolePermissions`,其余数据后台刷新。
|
||||
- `AccountContextLoader.restorePermissions` / `refreshSupplementalContext`:拆分阻塞阶段与后台补充阶段。
|
||||
|
||||
## 展示规则
|
||||
|
||||
- 背景色:白色 `#FFFFFF`
|
||||
- Logo:`SplashLogo`,180×180 pt
|
||||
- 标题:`随心瞰`,40pt,bold + italic,`AppDesign.primary`
|
||||
- 副标题:`商家版`,20pt,bold,距底 32pt
|
||||
- 系统 Launch Screen:白底、180×180 Logo、「随心瞰 / 商家版」文案。
|
||||
- 应用内 `SplashView`:bootstrap 完成前覆盖根视图,避免 `.restoring` 空白或登录页闪现。
|
||||
- bootstrap 结束后淡出 Splash,进入 `LoginView` 或 `MainTabsView`。
|
||||
- 无固定最短展示时长。
|
||||
|
||||
## 启动时序
|
||||
|
||||
1. iOS 系统 Launch Screen 展示白底 + Logo。
|
||||
2. `RootView` 挂载后立即显示 `SplashView`。
|
||||
3. `SplashCoordinator.start` 并行执行 `SessionBootstrapper.restore` 静默恢复登录态。
|
||||
4. bootstrap 完成后淡出 Splash,进入 `LoginView` 或 `MainTabsView`。
|
||||
5. 冷启动期间不显示 Lottie 全局 Loading。
|
||||
1. iOS 系统 Launch Screen 展示品牌页。
|
||||
2. `RootView` 挂载后立即显示 `SplashView` 覆盖层。
|
||||
3. `SessionBootstrapper.restore` 并行恢复登录态。
|
||||
4. 无 token:bootstrap 完成后进入 `LoginView`。
|
||||
5. 有 token:恢复 `AccountSnapshot` → 阻塞请求 `rolePermissions` → `markLoggedIn` → 进入 `MainTabsView`。
|
||||
6. `userInfo`、`scenicListAll`、`storeAll` 在后台补充刷新,不阻塞首屏。
|
||||
7. 冷启动期间不显示 Lottie 全局 Loading。
|
||||
|
||||
## 与 Android 的差异
|
||||
|
||||
- Android 首启隐私弹窗在 Splash 上;iOS 仍在登录页勾选协议。
|
||||
- Android 系统 Launch Screen 与应用内 Splash 使用同一 XML;iOS 系统 Launch Screen 仅展示 Logo,文案由 SwiftUI Splash 补齐。
|
||||
- Android 系统 Launch Screen 与应用内 Splash 使用同一 XML;iOS 系统 Launch Screen 与应用内 `SplashView` 保持相同布局,但应用内 Splash 仅在 bootstrap 期间展示。
|
||||
|
||||
Reference in New Issue
Block a user