Skip to content

书签、进度与统计

阅读进度

进度至少包含书籍、章节索引/标题和章节内位置。ReadingProgress 实际保存的字段是 bookIdchapterUrlchapterIndexcharacterOffset(章节内字符偏移)、pageIndex (章节内页码)、progressRatiolastReadAt。分页重排后优先使用章节内字符偏移恢复, 不能只保存旧 page index——原因很直接:字号从 18pt 调到 24pt 之后,同一章节的总页数会 变化(比如从 5 页变成 7 页),旧的 pageIndex: 3 在新分页方案下可能对应完全不同的内容, 但 characterOffset 指向的字符位置不会因为重新分页而改变,重排后只要重新定位到 "页面范围包含这个字符偏移的那一页"即可,恢复的阅读位置是准确的。pageIndex 更适合当作 "上次分页方案下的位置"快速恢复的优化路径,characterOffset 才是跨重排、跨设备恢复的 可靠依据。

书签

书签保存章节、位置、文本摘要和创建时间。换源或目录更新时通过章节名和位置尽量迁移, 无法可靠匹配时保留原书签并提示。

阅读统计

统计阅读会话和累计时长。计时器使用低频 wakeup,退出阅读器或场景进入后台时停止不必要 监控,并按固定节奏持久化,避免每秒刷盘和耗电。

同步

进度和书签可进入 iCloud/备份。冲突应优先保留更新时间更晚且章节位置合理的数据,不能用 空书架或初始化进度覆盖已读状态。

Readori 使用与开发文档