IOS-M3-03 实现阅读事件本地收集 #31

Closed
opened 2026-06-02 20:51:05 +08:00 by wangdl · 1 comment
Owner

目标

iOS 侧实现阅读事件生命周期管理和本地暂存。

对应 zhixi-document-runtime #20 IOS-DOC-003。

完成情况

已完成

  • Features/MaterialReader/ReadingEventCollector.swift — 单例事件收集器
    • open(materialId:) — MaterialOpened + 启动 15s 心跳
    • close(materialId:) — MaterialClosed(含 active_seconds)
    • updatePosition(materialId:position:) — 2s 防抖 PositionChanged
    • markAsRead(materialId:) — MarkedAsRead
    • exportPending() → [ReadingEvent]
    • clearExported(count:)
  • MaterialReaderView 集成:
    • .onAppear / .onDisappear 生命周期事件
    • Markdown 滚动跟踪(GeometryReader + PreferenceKey)
    • 自动 blockId + scrollProgress 上报

待完成

  • 批量上传到 /reading/events API(需要后端接口)
  • 网络失败重试队列
## 目标 iOS 侧实现阅读事件生命周期管理和本地暂存。 对应 zhixi-document-runtime #20 IOS-DOC-003。 ## 完成情况 ### 已完成 ✅ - `Features/MaterialReader/ReadingEventCollector.swift` — 单例事件收集器 - `open(materialId:)` — MaterialOpened + 启动 15s 心跳 - `close(materialId:)` — MaterialClosed(含 active_seconds) - `updatePosition(materialId:position:)` — 2s 防抖 PositionChanged - `markAsRead(materialId:)` — MarkedAsRead - `exportPending() → [ReadingEvent]` - `clearExported(count:)` - `MaterialReaderView` 集成: - `.onAppear` / `.onDisappear` 生命周期事件 - Markdown 滚动跟踪(GeometryReader + PreferenceKey) - 自动 blockId + scrollProgress 上报 ## 待完成 - 批量上传到 `/reading/events` API(需要后端接口) - 网络失败重试队列
wangdl added this to the M3:iOS 资料阅读闭环 milestone 2026-06-02 20:51:05 +08:00
Author
Owner

关闭

ReadingEventCollector 已实现。

## 关闭 ReadingEventCollector 已实现。
Sign in to join this conversation.
No description provided.