- 实现EPUB阅读器搜索功能及选中注释功能 - 优化CFI模块,修复代码审查发现的11个问题 - 实现大书远距目录跳转与后台补全优化方案 - 优化设置面板与章节运行时联动 - 重构及大量改进优化
111 lines
4.2 KiB
Markdown
111 lines
4.2 KiB
Markdown
# 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 端监听图片点击 + 原生展示) |
|