PRIVACY

隐私政策

你打的字,留在你的设备上。

更新于 2026 年 10 月 30 日 · 中文为主,附英文

输入与本机学习

Rectfly 键盘扩展不联网。中文纠错、英文补全、词语联想和个人学习在设备上完成。输入文字、导入的 Rime 用户词库及学习记录只在本机使用,不上传给我们;只有你打开“用 iCloud 同步学到的词”后,学到的词才会通过你自己的 iCloud 在设备间同步。

App Store 版本只在你同意后发送不关联身份的评测统计和诊断报告,不含输入文字;TestFlight 版本始终发送这两类数据,并且只在你点“发送日志”时发送输入记录。具体见下方说明。App 无第三方 SDK、无广告、无追踪工具。

本机评测记录与 TestFlight 日志

本机评测开启时,键盘在本机保存评测所需的输入记录。记录可能包含输入文字、候选、触点和周边上下文,验证码等普通输入框的内容也可能被记录;iOS 不允许第三方键盘在密码框中使用,因此密码不会被记录。App 中不能查看或导出这些记录。

关闭“本机评测”会停止采集,但不会删除已有记录;可在“隐私与数据”中通过“清除本机评测记录”删除。“清除学习记录”单独重置本机学习。

仅 TestFlight 版本:“隐私与数据”中有“发送日志”。点击后,App 把最近 7 天保存的输入记录压缩后通过 iCloud 发送给开发者,内容包括按键、触点、显示的候选和上屏文字。不点击就不发送。App Store 版本没有这个按钮,输入记录不会离开设备。

为什么请求完全访问

Rectfly 键盘扩展声明请求“允许完全访问”。它用于键盘与主 App 在本机共享设置、按键震动级别、用户词库、个人学习数据,以及主 App 安装的完整词库和语法模型,也用于共享本机评测记录,以及在键盘显示时读取普通剪贴板文字并在本机保存剪贴板历史。

完全访问会扩大 iOS 授予键盘的权限,包括联网能力;Rectfly 键盘没有联网代码,不使用该能力。基础输入可不授予完全访问,但本机共享与相关功能会受限。你可随时在 iOS 设置中关闭它。查看操作方法。

剪贴板历史

快速粘贴和剪贴板历史默认关闭,需要你在键盘里确认开启或在主 App 设置中打开;两项都关闭时键盘不读取剪贴板。开启并授予完全访问后,键盘显示期间检测到新的复制时会读取普通剪贴板文字,系统可能显示粘贴提示。历史仅存于本机 App Group,不上传、不同步,并排除系统备份。最多保存 50 条,保存时长可选 10 分钟、1 小时、7 天(默认)或 3 个月;下次读取时清理过期项。你可以单条删除、全部清空,关闭历史时已保存的内容会被删除。

带 Concealed / Transient 标记的内容不会收录;iOS 不公开来源过期时间,因此不能保证识别所有密码或临时文字。空白或超过 16 KiB 的文字也不会收录。快速粘贴提示在首次检测到新副本后三分钟内显示,使用、关闭或开始输入后收起;历史支持整段粘贴或滑动选词。

iCloud 同步

主 App 默认通过你的 iCloud 账户同步键盘设置,例如拼音方案、语言、自动纠错、按键震动、键盘尺寸、主题、强调色和自定义短语,让同一 Apple 账户下的设备使用相同设置。这些数据保存在你自己的 iCloud 键值存储中,我们无法访问。输入记录、剪贴板和导入的用户词库不参与同步。自定义键盘图标的照片只在本机裁切成小图保存,不上传、不同步。你可以在“同步”中关闭“用 iCloud 同步设置”。

“用 iCloud 同步学到的词”默认关闭,需要你在“同步”中自己打开。打开后,主 App 在前台时把键盘学到的词(词语、对应按键和使用次数,以及你删除过的词和清除学习记录的时间,以免它们在其他设备上恢复)保存到你自己 iCloud 账户的 CloudKit 私有数据库,并与同一 Apple 账户下的其他设备合并。私有数据库只有你能访问,我们无法读取。键盘本身不联网,只读取主 App 写入本机的结果。关闭后同步立即停止,App 会询问是否同时删除 iCloud 中的副本;本机学到的词保留。

键盘离线,主 App 只连接 Apple

键盘扩展的输入过程不使用网络。完整词库、词包和万象语法模型由 Apple 托管,iOS 在安装或更新 App 后自动从 Apple 下载,主 App 校验后安装到键盘使用的本机存储。

主 App 发送评测统计、诊断报告和(仅 TestFlight 版本)日志时,使用 Apple 的 CloudKit 公共数据库(容器 iCloud.sh.lyc.rectfly),需要登录 iCloud;同步学到的词使用同一容器中你自己的私有数据库。除此之外,App 不连接 GitHub、Cloudflare 或其他服务器。“关于”中的外部链接只在你点击时用浏览器打开。Apple 会接收建立连接所需的 IP 地址等信息,并按其隐私政策处理。

联邦评测

联邦评测使用本机输入记录,将最多三个试验组分别与当前方案对比,计算在本机完成,不改变当前键盘。统计衡量首选候选与实际上屏选词是否一致,不代表输入正确率。

App Store 版本首次打开时询问“帮助改进 Rectfly?”。选“好”开启本机评测,并同意满 500 次对比后在 App 前台自动发送统计;选“不用了”保持关闭,选择前不采集、不发送。之后可在设置中开关“本机评测”,打开即表示同意自动发送。TestFlight 版本始终开启评测和自动发送,开关不可关闭。

发送内容只有汇总计数和必要标识:“两种都一致、仅当前一致、仅试验一致、两种都不一致”的计数、总数和按输入长度分组的统计,每个键周围触点落点的计数(按偏移位置分格)和实际落到哪个键的计数,按机型、键盘宽度和横竖屏分组;以及实验标识、构建版本标识、完成日期和随机提交编号。编号只用于防止重复计数,不是设备标识;不含输入文字、所选词语、拼音、按键顺序或时间。你可以在“了解本机评测”或评测结果中打开“查看上传内容”。

统计保存在 Rectfly 的 CloudKit 公共数据库,只有开发者能读取。保存时开发者看不到你的 Apple ID。每个实验只发送一份结果;发送失败时 App 会保留结果,在前台重试。关闭“本机评测”会取消待发送的结果并清除评测结果文件,原始输入记录需单独清除;已经接收的统计不会撤回。统计不用于广告或跨应用追踪,保留至开发者删除。如需删除,请联系 rectfly@fastmail.com;由于结果不关联身份,我们可能需要相应的提交编号才能定位记录。

崩溃与性能报告

主 App 和键盘通过 Apple 的 MetricKit 收集崩溃与性能报告,包括卡顿、内存、启动时间、CPU 用量和带调用栈的崩溃诊断,以及 App 版本和 iOS 版本。报告不含输入文字。主 App 在前台时把每份报告上传到同一个 CloudKit 公共数据库,用于修复卡顿、内存终止和崩溃。

报告与评测使用同一项同意:App Store 版本在“本机评测”开启时收集,关闭后停止收集并删除未发送的报告;TestFlight 版本始终收集。报告不关联身份,不用于追踪。

本网站与联系

本网站仅使用静态 HTML、CSS 和本地图片,无脚本、无 Cookie、无追踪、无外部字体或第三方嵌入。外部来源链接仅在你点击时打开。

网站由 GitHub Pages 托管,访问时托管服务可能处理 IP 地址等必要请求信息。网站不收集你的键盘输入。

隐私问题或数据处理咨询,请联系 rectfly@fastmail.com。你主动发送的邮件内容会交由邮件服务处理,请避免附带敏感输入记录。

Privacy policy · English

Updated October 30, 2026

Typing and local learning

The Rectfly keyboard extension does not access the network. Correction, completion, suggestions and personal learning run on your device. Typed text, imported Rime user dictionaries and learning records stay local and are never uploaded to us. Learned words sync between your devices through your own iCloud only if you turn on Sync Learned Words with iCloud. The App Store version sends evaluation statistics and diagnostic reports, which contain no typed text and are not linked to your identity, only after you agree. TestFlight builds always send both, and send input records only when you tap Send Logs. Details follow. There are no third-party SDKs, ads or tracking tools.

Local evaluation records and TestFlight logs

While on-device evaluation is on, the keyboard stores the input records evaluation needs on your device. Records may contain text, candidates, touch events and surrounding context, including verification codes entered into ordinary fields. iOS does not allow third-party keyboards in password fields, so passwords are never recorded. The app cannot show or export these records.

Turning evaluation off stops collection but does not delete existing records. Use Clear Evaluation Records under Privacy & Data to delete them. Clear Learning Data resets local learning separately.

TestFlight builds only: Privacy & Data has a Send Logs button. When you tap it, the app compresses the input records kept from the last 7 days and sends them to the developer through iCloud. They include keys, touches, shown candidates and committed text. Nothing is sent unless you tap it. The App Store version has no such button, and input records never leave the device.

Full Access

The extension requests Full Access to share settings, haptic preferences, imported dictionaries, personal learning, and the full lexicon and grammar model installed by the app between the app and keyboard on your device, as well as local evaluation records. It also permits reading ordinary clipboard text when the keyboard appears and storing clipboard history locally. iOS also grants network capability with this permission; Rectfly's keyboard contains no networking code and does not use it. Basic typing works without Full Access, while shared features are limited. You may revoke it in iOS Settings at any time.

Clipboard history

Quick paste and clipboard history are off by default; you turn them on from the keyboard's prompt or in the app's settings. With both off, the keyboard does not read the clipboard. When enabled with Full Access, ordinary clipboard text is read when a new copy is detected while the keyboard is shown, and the system may display a paste notification. History stays in the local App Group, without upload or sync, and is excluded from system backups. Up to 50 entries are kept for 10 minutes, 1 hour, 7 days (default) or 3 months, as you choose; expired entries are removed on the next read. You can delete entries individually or clear all, and turning history off deletes what was kept.

Content marked Concealed or Transient is skipped. iOS does not expose the source expiration date, so not all passwords or temporary text can be identified. Blank text and text exceeding 16 KiB are also skipped. The quick-paste offer lasts up to three minutes after a new copy is first observed, or until dismissed, used or typing begins. History supports pasting whole entries or selecting words by sliding.

iCloud sync

By default the app syncs keyboard settings, such as the pinyin layout, languages, auto-correction, haptics, keyboard size, themes, accent color and custom phrases, through your iCloud account so devices on the same Apple Account share them. They are kept in your own iCloud key-value storage; we cannot access them. Input records, clipboard and imported dictionaries are not synced. A custom keyboard logo photo is cropped to a small image and kept on the device only; it is not uploaded or synced. You can turn off Sync Settings with iCloud under Sync.

Sync Learned Words with iCloud is off by default; you turn it on under Sync. When it is on, the app, while in the foreground, saves the words the keyboard has learned (each word, its keys and use count, plus the words you removed and when you cleared learning data, so they do not come back on another device) to the CloudKit private database in your own iCloud account and merges them with your other devices on the same Apple Account. Only you can access your private database; we cannot read it. The keyboard itself does not use the network and only reads what the app writes on the device. Turning it off stops sync at once, and the app asks whether to also delete the copy in iCloud; learned words on the device are kept.

Network

The keyboard extension does not use the network. The full lexicon, word packs and Wanxiang grammar model are hosted by Apple; iOS downloads them from Apple after the app is installed or updated, and the app verifies and installs them into the local storage the keyboard reads. To send evaluation statistics, diagnostic reports and (TestFlight only) logs, the app uses Apple's CloudKit public database (container iCloud.sh.lyc.rectfly), which needs an iCloud sign-in. Learned word sync uses your own private database in the same container. The app contacts no other servers, including GitHub or Cloudflare. Links under About open in your browser only when you tap them. Apple receives connection information such as your IP address and handles it under its privacy policy.

Federated evaluation

Evaluation uses local input records to compare up to three trial groups individually against the current configuration. It runs on your device and does not change the current keyboard. Counts measure whether the top candidate matches the word actually committed, not typing accuracy.

On first launch the App Store version asks “Help Improve Rectfly?”. OK turns on on-device evaluation and consents to automatic uploads after 500 comparisons while the app is in the foreground. No Thanks leaves it off; nothing is collected or sent before you choose. You can later switch On-Device Evaluation in Settings; turning it on consents to automatic sending. TestFlight builds always have evaluation and automatic sending on, and the switch cannot be turned off.

The upload contains only aggregate counts and necessary identifiers: counts where both configurations match the committed word, only the current configuration matches, only the trial matches, or neither matches; totals and input-length buckets; for each key, counts of where touches landed around it (in offset bins) and which key they registered on, grouped by device model, keyboard width and orientation; experiment and build identifiers; a completion date; and a random submission ID for deduplication. This ID is not a device identifier. It contains no typed text, selected words, pinyin, key order or timing. Open View Upload Contents under About On-Device Evaluation or in your results to see it.

Statistics are saved to Rectfly's CloudKit public database, readable only by the developer. The developer does not see your Apple ID. One result is sent per experiment; failed uploads are kept and retried while the app is in the foreground. Turning evaluation off cancels pending uploads and clears result files; raw input records must be deleted separately. Statistics already received are not recalled. They are not used for advertising or cross-app tracking and remain stored until the developer deletes them. Contact rectfly@fastmail.com for deletion requests. Because results are not linked to identities, we may need the relevant submission ID to locate a record.

Crash and performance reports

The app and keyboard collect Apple MetricKit crash and performance reports: hangs, memory, launch time, CPU use and crash diagnostics with call stacks, plus app and iOS versions. Reports contain no typed text. While in the foreground, the app uploads each report to the same CloudKit public database to fix hangs, memory terminations and crashes. Reports follow the evaluation consent: in the App Store version they are collected while On-Device Evaluation is on, and turning it off stops collection and deletes unsent reports; TestFlight builds always collect them. Reports are not linked to your identity or used for tracking.

Website and contact

This static website uses local images and CSS, with no scripts, cookies, analytics, external fonts or third-party embeds. External links open only when selected. The host, GitHub Pages, may process IP addresses and other request information needed to serve pages. Contact rectfly@fastmail.com about privacy. Messages you choose to send are handled by email services; avoid including sensitive input records.