- 实现EPUB阅读器搜索功能及选中注释功能 - 优化CFI模块,修复代码审查发现的11个问题 - 实现大书远距目录跳转与后台补全优化方案 - 优化设置面板与章节运行时联动 - 重构及大量改进优化
4.2 KiB
readoor vs ReadViewSDK 功能差距分析
最后更新:2026-06-18
概述
本文档对比 readoor(BookView/EPUB/)EPUB 阅读器与 ReadViewSDK 的功能差异,列出 readoor 已实现但 ReadViewSDK 尚未实现的功能,以及实现方式存在差异的功能。
未实现的功能
1. 字体下载
readoor 状态: 已实现。RBCoreEpubFontDownloadViewController + RBCoreEpubFontDownloadHandler 提供字体下载管理,支持用户从服务端下载自定义字体并通过 @font-face 注入阅读器。
ReadViewSDK 状态: 未实现。RDEPUBFontNormalizer 仅负责注册 EPUB 内嵌字体(CTFontManagerRegisterFontsForURL)和系统字体回退,无字体下载/商店功能。
影响: 用户只能使用系统字体和 EPUB 自带字体,无法扩展字体选择。
2. 服务器同步笔记/书签
readoor 状态: 已实现。pullEpubNoteInfo/pushEpubNoteInfo 通过 API 同步笔记到云端,支持多设备数据一致性。
ReadViewSDK 状态: 未实现。RDEPUBReaderDelegate 提供 didUpdateHighlights、didUpdateBookmarks 等回调,但仅为本地通知,无网络请求或远程同步逻辑。笔记/书签数据完全在本地管理。
影响: 用户换设备后阅读数据(书签、高亮、笔记)会丢失。
3. 加密 EPUB 解密
readoor 状态: 已实现。STSRDFileManagerStorage readToFileDeCrypt:password: 基于 bookID 拼接密码,对所有 EPUB 资源(HTML、CSS、图片)进行解密加载。
ReadViewSDK 状态: 未实现。RDEPUBParser 直接解析标准 EPUB 归档,无加解密层。
影响: 无法打开加密的 EPUB 文件。
4. 试读/购买权限控制
readoor 状态: 已实现。支持三种权限模式:免费试读、登录后免费、购买后阅读。通过 API 返回的权限字段控制章节可读性。
ReadViewSDK 状态: 未实现。无试读限制、付费墙或章节权限控制逻辑。
影响: SDK 无商业化能力,无法限制用户只阅读已购买的章节。
5. 阅读统计上报
readoor 状态: 已实现。RDStatisticsManager 上报阅读进度(sectionNo + 页面内进度),集成埋点系统。
ReadViewSDK 状态: 未实现。JS 端 reportProgression() 仅将进度通过 webkit.messageHandlers 传递给原生端,属于本地 bridge 通信,无远程上报。
影响: 无法收集用户阅读行为数据用于运营分析。
6. 图片点击放大
readoor 状态: 已实现。点击 EPUB 内图片发送通知,弹出全屏图片查看(showImageView)。
ReadViewSDK 状态: 未实现。JS 端 handleDocumentClick(epub-bridge.js:388-400)仅处理链接点击,不处理图片点击事件。
影响: 用户无法放大查看 EPUB 中的小图片或细节图。
实现方式存在差异的功能
7. 亮度调节
readoor 方式: 通过黑色半透明 CALayer overlay 暗化屏幕,不改变系统亮度。
ReadViewSDK 方式: 直接设置 UIScreen.main.brightness(系统屏幕亮度 API)。已实现,但会影响系统全局亮度。
8. 搜索结果上下文
readoor 方式: 搜索结果显示匹配文本前后各 30 字符上下文。
ReadViewSDK 方式: previewRadius 为 12 字符(RDEPUBReaderController+DataSource.swift:196-201),上下文较短。
9. CSS 主题切换机制
readoor 方式: 通过 JS classList.toggle("mycss") 切换 CSS class 实现主题切换。
ReadViewSDK 方式: 通过 cssInjector.js 的 window.RDInjectedCSS.setStyle(identifier, cssText, options) 直接操作 style 标签内容。功能等价,但机制不同。
总结
| # | 功能 | 优先级 | 复杂度 |
|---|---|---|---|
| 1 | 字体下载 | 中 | 中(需后端接口 + 下载管理) |
| 2 | 服务器同步 | 高 | 高(需 API 设计 + 冲突解决) |
| 3 | 加密 EPUB | 高 | 中(需对接加密方案) |
| 4 | 试读/购买权限 | 高 | 低(SDK 层暴露权限接口即可) |
| 5 | 阅读统计上报 | 中 | 低(delegate 暴露事件即可) |
| 6 | 图片点击放大 | 中 | 低(JS 端监听图片点击 + 原生展示) |