它是做什么的
离线搜索仅针对已下载的历史。删除消息需要互联网连接,且只有在 Telegram 允许的情况下才能为所有人删除消息。
人们会在聊天里留下各种东西:匆忙发出的密码、一次性验证码、API 密钥、卡号、地址。Telegram 自带的搜索能找到一个词,前提是您记得它在哪个聊天里、用的是什么形式。TCleanner 在设备上为您的历史建立一个简单的索引,让您一次性对全部内容运行真正的正则表达式,然后选中找到的内容并删除——为所有人删除,在每一台设备上,而且在任何内容被删除之前,确切的数量就摆在您面前。
它只读取您自己的账户,从不发送消息。它为您的私人聊天和群组建立索引;您订阅的频道只有在您开启相应选项后才会被索引。
数据在哪里
没有服务器,也没有分析、广告或跟踪器。仅使用的库是 Telegram 自己的 TDLib 和本地数据库 GRDB。索引存放在应用的私有存储中,不包含在备份中。会话保存在 TDLib 加密的数据目录中,同样是私有的、不包含在备份中;其密钥存放在 Keychain 中,以“仅限此设备”的方式保存:它可能出现在加密的设备备份中,但无法恢复到其他设备。应用作为您的客户端,只与 Telegram 通信。
同样的六条原则也在应用的“设置 › 工作原理”中:在您的设备上;只有 Telegram;不向第三方提供任何内容;删除什么由您决定;您的会话与索引;诊断信息仅在您自己导出时才会离开应用。完整内容见隐私政策。
它是怎样构建的
一款原生的 iPhone 和 iPad 应用。一个 Swift 包承载领域逻辑和展示器;SwiftUI 渲染状态快照并把意图发回。应用通过 TDLib 连接 Telegram,并关闭了 TDLib 自己的消息数据库,因为索引由本应用自己掌管。该索引是通过 GRDB 使用的 SQLite,用可提前停止的全量扫描来搜索,而不是用词索引:词索引无法回答正则表达式。
行为在写代码之前先写下来:十一份带有可执行场景的能力规格,每条需求都有一个固定的 ID,代码和测试都引用它。测试运行在可控制时间的测试实现之上。项目有自己的变异测试工具,目标是 100%;所有能力都已达到。建立索引会自行控制节奏,应用被强制退出后也能继续。删除始终为所有人删除,始终以确切数量确认,绝不定时执行。
现状
尚未上架 App Store。内置演示存档用于在没有 Telegram 账户的情况下进行开发和测试。源代码不公开。
应用支持和诊断:support@kudravets.com。一般咨询:info@kudravets.com。
非官方应用。使用 Telegram API,与 Telegram 无关联。
开源许可(英文)



