读书派(TextReader)
面向中文长文本的 iOS 阅读与听书应用:导入、分页、TTS 后台朗读、全文搜索和 AI 提问模板,纯本地、零数据收集。
为什么做
手头总有一批纯文本:电子书、网上存下来的长文、自己整理的资料。读它们的体验一直不好——通用阅读器对 txt 的排版支持简陋,想在通勤时「听」就更没有顺手的选择。我想要的东西很具体:把一个 txt 丢进去,它能分页、能朗读、能后台播放、能在锁屏上控制,读到一半还能就着当前内容向 AI 提问。市面上找不到同时满足这几条的,就自己写了一个。产品名叫「读书派」。
它是什么
读书派是一个 iOS 应用,把纯文本变成可读、可听、可问的材料。
导入有四种方式:文件导入(支持 UTF-8、GBK、GB18030 编码,老资源站下载的 GBK 文本不用先转码)、粘贴创建、系统分享(通过 Share Extension 从其他应用接收),以及 Wi-Fi 局域网传书——应用内置一个 web 服务,电脑浏览器打开对应地址就能把 txt 推送到手机。
阅读侧是分页视图加全文搜索。听书侧用系统 TTS 引擎朗读,支持后台播放、锁屏与控制中心遥控、耳机线控,还有一个长按播放键唤出的径向选择器用来设睡眠定时。所有数据留在本机,不注册、不联网上报、零数据收集。
技术要点与设计决策
后台音频这条链路是 iOS 工程里的硬骨头:AVSpeechSynthesizer 负责合成,MPRemoteCommandCenter 接管锁屏和控制中心的播放控制,Now Playing 信息随朗读进度更新。要让「朗读一本书」在系统眼里表现得和播放播客一样稳定,这一整套都得接对。
「大爆炸」分词交互:长按正文,用 NaturalLanguage 框架的 NLTokenizer 把这一段分成词块,拖选即可精确取词。这是对 Smartisan Big Bang 交互的 SwiftUI 实现,解决长文里选中一段中文的精度问题。
Prompt 模板系统是阅读器里内嵌的 AI 工作流:选中一段文本,套用带 {selection}、{page}、{book} 占位符的模板,生成完整的提问文本,复制出去或直接唤起搜索。模板可以自己增改。读到看不懂的段落,两步之内就能把「这段话在这本书的语境里是什么意思」这样的问题连同上下文一起发给 AI。
两个产品决策值得记录。一是只做 iPhone:工程里明确设置只支持 iPhone 设备族,放弃 iPad 适配,换来更小的维护面。二是审核样例态与真实数据隔离:设置页连点版本号七次会出现隐藏调试入口,可以切换到一个预置示例内容的独立数据空间,演示和排查都不触碰真实书库,切回后原样恢复。
工程质量上,仓库带单元测试和 UI 测试,Makefile 一条命令完成真机构建安装。它遵循我给个人 App 定的产品规则:面向个人使用,改动克制,不为堆功能加设置项。
当前状态
2024 年 9 月创建,活跃维护中,最近更新在 2026 年 6 月。代码以 MIT 协议开源。配套的隐私政策已公开发布,内容与应用行为一致:本地化、零收集。