IOS-INFO-014:App 前后台 flush / pause / resume #122

Open
opened 2026-06-10 21:28:13 +08:00 by wangdl · 0 comments
Owner

目标

在 App 前后台切换时正确处理阅读 session、heartbeat、事件导出和本地队列写入。

场景

  • active → background
  • background → active
  • active → inactive
  • app terminate best effort

规则

  1. 进入后台时 pause heartbeat。
  2. 进入后台时 best-effort export pending events。
  3. export 后写本地队列,成功才 ack。
  4. 回到前台时 resume heartbeat。
  5. 若 session 已失效,重新 open 或恢复 session。
  6. 前后台切换不应重复 open。

Session 失效判断条件

  1. App 从冷启动恢复,内存中的 sessionId 不存在。
  2. Runtime 返回 SESSION_NOT_FOUND。
  3. Runtime 返回 SESSION_ALREADY_CLOSED。
  4. session 进入后台超过 sessionResumeMaxAge。
  5. App crash / system kill 后重新启动。
  6. Runtime buffer 经 reload_stale_events_v2 恢复后,旧 session 不再可继续写入。

处理规则

  1. session 失效后,不继续 heartbeat。
  2. session 失效后,不继续 recordPositionChanged。
  3. 若用户仍在阅读页,重新 open 新 session。
  4. 旧 session 尽量标记 interrupted。
  5. 新旧 session 的事件不能混用同一个 clientSessionId。

验收标准

  1. 进入后台会 pause。
  2. 进入后台会尝试 flush。
  3. flush 成功后 ack。
  4. 回前台会 resume。
  5. 不重复创建 session。
  6. App 生命周期日志可观察。
  7. 有测试或手动验收脚本。
## 目标 在 App 前后台切换时正确处理阅读 session、heartbeat、事件导出和本地队列写入。 ## 场景 - active → background - background → active - active → inactive - app terminate best effort ## 规则 1. 进入后台时 pause heartbeat。 2. 进入后台时 best-effort export pending events。 3. export 后写本地队列,成功才 ack。 4. 回到前台时 resume heartbeat。 5. 若 session 已失效,重新 open 或恢复 session。 6. 前后台切换不应重复 open。 ## Session 失效判断条件 1. App 从冷启动恢复,内存中的 sessionId 不存在。 2. Runtime 返回 SESSION_NOT_FOUND。 3. Runtime 返回 SESSION_ALREADY_CLOSED。 4. session 进入后台超过 sessionResumeMaxAge。 5. App crash / system kill 后重新启动。 6. Runtime buffer 经 reload_stale_events_v2 恢复后,旧 session 不再可继续写入。 ## 处理规则 1. session 失效后,不继续 heartbeat。 2. session 失效后,不继续 recordPositionChanged。 3. 若用户仍在阅读页,重新 open 新 session。 4. 旧 session 尽量标记 interrupted。 5. 新旧 session 的事件不能混用同一个 clientSessionId。 ## 验收标准 1. 进入后台会 pause。 2. 进入后台会尝试 flush。 3. flush 成功后 ack。 4. 回前台会 resume。 5. 不重复创建 session。 6. App 生命周期日志可观察。 7. 有测试或手动验收脚本。
wangdl added this to the M-IOS-INFO:学习信息采集、上传、继续学习与基础分析闭环 milestone 2026-06-10 21:28:13 +08:00
wangdl added the
blocked-by:doc-runtime
label 2026-06-10 22:15:58 +08:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: wangdl/ios-projects#122
No description provided.