Reading Pal — 隐私政策

生效日期:2026-05-23 — 最后更新:2026-07-15


1. 简介

Reading Pal 是一款阅读记录与番茄钟计时应用,由 林承葦(Darren Lin)(个人开发者,台湾)运营。本政策说明您在使用 Reading Pal 时,我们收集哪些个人信息、收集目的、向谁共享,以及您可行使的相关权利。

本政策适用于 Reading Pal 移动应用及其后端 API。不适用于您所关联的第三方服务(如 Google)——此类服务由其各自的隐私政策规范。


2. 我们收集的信息

(a) 账号信息

字段 来源 目的
电子邮件地址 您(注册时)或 Google OAuth 账号识别、登录、账号找回
显示名称 您或 Google OAuth 在应用内显示
头像 URL Google OAuth(如适用) 个人头像
密码哈希值(bcrypt) 您(仅限邮箱+密码注册) 身份验证——我们从不存储或查看您的明文密码
语言与时区 注册时设置 界面本地化;确保通知在正确时间送达

(b) 验证令牌

(c) 阅读活动

(d) 设备信息

字段 目的
匿名设备 ID(设备端生成的 UUID) 将推送令牌与使用片段关联至特定设备,且不关联至手机硬件标识符或 IMEI
FCM 推送令牌(Firebase 云消息) 向您的设备发送推送通知
应用版本与操作系统版本 崩溃诊断;兼容性检查

(e) 服务器日志

每次对后端的请求均记录以下信息: - IP 地址(用于限流、安全防护与滥用检测——每 30 天自动轮换清除) - HTTP 方法、URL 路径、响应状态码、响应延迟、请求 ID

我们在生产环境不记录请求体。

(f) 审计日志

我们仅针对以下四种事件类型维护审计日志:deletion_requesteddeletion_cancelleddeletion_executedexport_requested。每条事件记录以下信息: - 时间戳 - 事件类型 - 数字型用户 ID - IP 地址、设备 ID,以及您填写的删除原因(如有提供,上限 2,000 字)——这些元数据字段在账号永久删除时即被设为 NULL;仅事件类型、时间戳与数字型用户 ID 在该时间点后继续保存

这些记录在您的账号删除后仍予保留,并无限期保存以供合规验证之用——以证明我们已履行您的删除或导出请求。账号永久删除后,留存记录已完全去标识化:仅包含事件类型、时间戳,以及一个不再对应任何真实用户的数字型用户 ID(账号本身已不存在)。记录中不含任何个人身份信息,亦无任何阅读内容。

(g) 崩溃与错误报告(通过 Sentry)

当应用崩溃或后端发生错误时,我们发送至 Sentry 的报告包含: - 堆栈跟踪 - 您的数字型用户 ID(不含电子邮件或显示名称) - 应用版本与环境标签 - 请求 URL 路径(已移除查询字符串)

我们不发送:您的电子邮件地址、显示名称、IP 地址、请求体、Cookie、刷新令牌,或任何自由文本笔记内容。

Sentry 保留这些报告 7 天(免费版默认值)。Sentry 数据托管于欧盟地区de.sentry.io)。详见第 4 节。

(h) 设置与偏好

(i) 游戏化数据

(j) 分析数据(通过 Firebase Analytics / Google Analytics)

我们使用 Firebase Analytics(Google 服务)了解整体使用模式,以改善应用体验。我们发送的事件与参数严格限制于以下范围:

事件/字段 参数 目的
screen_view screen_namescreen_class 页面浏览与离开点漏斗分析。值为不含个人身份信息的路由字面(/library/library/[bookId]/profile/shop 等);动态 ID 已以字面占位符替换
sign_uploginguest_start 认证漏斗转化率。不附带邮箱或账号数据
add_book category(如 fiction 阅读漏斗起点与内容类型偏好分析。仅到类别代码层级,绝无书名、书本内容或 ISBN
start_reading_session 阅读漏斗:开始阅读。不带书籍 ID 或书名
complete_reading_session duration_bucket<1515-3030-6060+ 分钟) 阅读漏斗:完成阅读及投入时长分布。仅使用粗分桶,绝无精确秒数
view_subscriptionbegin_purchasepurchase_success product_id(SKU 常量) 变现漏斗。product_id 为静态 SKU 字符串,非个人数据——不含购买凭证、金额或付款信息
view_shopredeem_item item_id(商品常量) 商店漏斗。item_id 为静态常量——不带数量或余额
rewarded_offer_shownrewarded_startedrewarded_earned 激励广告漏斗:曝光→开始观看→看完获奖
Firebase 内置:engagement_timesession_startfirst_open 自动 Firebase SDK 自动采集的工程指标,我们未手动写入

我们不发送给 Firebase Analytics 的数据: 电子邮件地址、显示名称、书名、笔记内容、阅读时间戳、精确阅读时长、ISBN、购买凭证,或任何自由文本内容。

Firebase Analytics 也会自动将事件关联至 App Instance ID(Firebase 生成的每次安装标识符,清除应用数据或重装即可重置)及 Android 上的 Android 广告 ID(由 Google 管理的可重置设备级标识符)。这些标识符由 Firebase SDK 自动收集,我们未手动附加。

Firebase Analytics 的数据由 Google 依其隐私条款处理。详见第 4 节。


3. 我们如何使用您的信息

目的 使用的信息
提供服务——跨设备同步书库、记录阅读片段、计算阅读统计数据 第 2(a)、2(c)、2(h)、2(i) 节
身份验证与账号安全(令牌轮换、会话失效) 第 2(a)、2(b)、2(d) 节
推送通知(各类型严格采用户主动开启制——详见第 10 节) 第 2(d) 节 FCM 推送令牌
崩溃诊断与服务稳定性 第 2(g) 节
安全防护——依 IP 与设备的限流、身份验证流程的欺诈检测、防范撞库攻击 第 2(d)、2(e) 节
证明已履行删除/导出请求 第 2(f) 节
分析——了解整体使用模式并改善应用 第 2(j) 节

邮箱验证(邮箱/密码注册): 当您以邮箱和密码注册时,我们会通过 Resend 发送一封含 6 位验证码的验证邮件,以确认您拥有该邮箱地址。使用 Google 登录不会触发此流程。

应用内广告(Google AdMob): Reading Pal 通过 Google AdMob 投放广告(仅限 Android;iOS 暂无广告)。广告形式共三种:书库列表底部的 banner 广告、阅读时长达 13 分钟以上的阅读结束后全屏插页广告,以及用户可主动选择观看以换取应用内积分的激励广告。

提供给 AdMob 用于广告投放、计量及防欺诈的信息:Android 广告 ID(AAID,由 Google 管理的可重置设备级标识符)及情境/技术信号(应用与设备元数据)。AAID 已由 Firebase Analytics SDK 收集(详见上方第 2(j) 节);AdMob 沿用同一标识符用于广告用途。

激励广告采用 AdMob 服务端验证(SSV):我们向 AdMob 发送一个假名化的数字型用户 ID 及自定义数据字符串,仅用于验证奖励资格,不用于广告定向

我们不会向 AdMob 或任何广告商提供:您的电子邮件地址、显示名称、账号信息、书库内容或阅读记录。

欧盟/英国用户: 广告加载前会先执行 Google 用户消息平台(UMP)同意流程。若您拒绝同意或适用法规另有要求,则仅显示非个性化广告(或不显示广告)。未获得同意前不加载广告(fail-closed)。

选择退出: Android 设置 → 隐私 → 广告 → 重置或删除广告 ID。


4. 信息访问方(次处理方)

提供方 角色 共享信息 地区
Google(OAuth) Google 登录 标准 OpenID Connect 声明(sub、email、name、picture) 全球
Google Firebase 云消息(FCM) 推送通知投递 FCM 注册令牌;推送通知标题与内容 全球
Google Firebase Analytics / Google Analytics 使用分析 第 2(j) 节所列应用互动事件与参数;App Instance ID;Android 广告 ID(Android,SDK 自动收集) 全球
Google Play 应用分发与授权 标准安装元数据(不含阅读数据) 全球
Sentry(Functional Software, Inc.,美国;数据托管于欧盟) 崩溃与错误监控 详见第 2(g) 节——堆栈跟踪、数字型用户 ID、版本、路径 欧盟
Resend(Resend, Inc.,美国;发送区域配置于欧盟—爱尔兰) 交易性邮件投递(验证码邮件) 电子邮件地址+验证码内容,仅于您以邮箱/密码注册时发送 欧盟(爱尔兰)
Apple / APNs iOS 推送投递(仅于 iOS 版本上线后适用——目前为 Android 专用) APNs 设备令牌+推送载荷 全球
Google AdMob 应用内广告(Android) Android 广告 ID(AAID)+ 情境/技术信号;激励广告 SSV 另发送假名化数字型用户 ID 供奖励验证(非用于广告定向) 全球

我们从不将个人信息出售给任何第三方。


5. 个人信息的跨境传输

您的所有账号、书库及阅读数据均存储于 DigitalOcean 法兰克福(德国,欧盟)数据中心(区域:FRA1)。欧盟用户的数据不会离开欧盟境内。

Sentry 崩溃报告同样使用 Sentry 的欧盟地区(de.sentry.io)。

部分次处理方(Google、AdMob)在全球范围内运营,可能依其自身隐私条款在不同地区间传输数据以维持服务可靠性。


6. 您的权利

您可在应用内直接行使大多数权利,无需发送电子邮件。

权利 行使方式
查阅 设置 → 账号 → "导出我的数据"——立即生成完整 JSON 导出文件供下载
更正 设置 → 个人资料——直接编辑显示名称及其他个人资料字段
删除 设置 → 账号 → "删除账号"——启动 30 天宽限期。在此期间重新登录即可取消。30 天后,您的所有个人信息将从数据库中永久删除(依第 2(f) 节保留一条去标识化审计记录以供合规验证)。
可携性 与查阅权相同的 JSON 导出
限制处理 请发送电子邮件(第 12 节)
拒绝营销 设置 → 通知 → "营销推送"——关闭(默认值即为关闭)

欧盟/欧洲经济区用户: 您亦有权向所在国家的监管机构(如各国数据保护机构)提出投诉。

台湾用户: 相关权利依据《个人资料保护法》行使。

我们将于收到请求后 30 天内予以回应。


7. 儿童

Reading Pal 并非面向 13 岁以下儿童设计。我们不会在知情情况下收集未满 13 岁用户的个人信息。如您认为有儿童创建了账号,请发送电子邮件至 tn08869679@gmail.com,我们将删除该账号。


8. Cookie 与追踪标识符

Reading Pal 是移动应用,不使用网页 Cookie。我们使用以下标识符:

标识符 类型 目的 可重置?
设备 ID 首次启动时在本地生成的匿名 UUID 会话与推送路由——不关联至硬件标识符 是——卸载后重装即生成新标识符
FCM 令牌 由 Firebase 分配 推送通知投递 是——Firebase 会定期刷新;退出登录时亦会清除
Firebase App Instance ID 由 Firebase Analytics SDK 在安装时分配 将分析事件关联至同一次安装 是——清除应用数据或重装即重置
Android 广告 ID Google(由 Firebase Analytics SDK 在 Android 上自动收集;AdMob 亦沿用同一标识符) 分析事件关联;AdMob 广告投放与计量 是——设置 → 隐私 → 广告 → 重置广告 ID

9. 数据保留期限

数据类别 保留期限
账号、书库、阅读片段、设置、成就、积分 使用期间保留;删除账号后进入 30 天宽限期,期满后永久删除
审计日志(删除/导出事件记录——不含个人阅读内容) 去标识化记录(事件类型+时间戳+不再对应任何真实用户的数字型用户 ID)无限期保存,供合规验证;IP、设备 ID 与用户填写的原因在账号永久删除时设为 NULL
服务器访问日志(IP 地址、请求元数据) 30 天,到期后自动轮换清除
崩溃报告(Sentry) 7 天(Sentry 免费版默认值)
刷新令牌记录 至令牌过期或明确撤销为止
Firebase Analytics 事件数据 依 Google 的保留设置(用户级数据默认 2 个月;汇总报告由 Google 另行保留)。详见 Google 数据保留说明

10. 营销通讯

营销推送通知默认为关闭。您可主动开启:设置 → 通知 → "营销推送"。您可随时在同一位置关闭。

我们不发送营销电子邮件。


11. 本政策的变更

重大变更(新增信息类别、新增次处理方、扩大现有信息用途)将通过应用内横幅,于生效前 30 天公告。更新版本将标注日期。

轻微修订(错别字修正、不影响您权利的说明澄清)将立即生效,不另行事先通知。

预先披露的未来变更:

重大变更(新增信息类别、新增次处理方、扩大现有信息用途)将通过应用内横幅,于生效前至少 30 天公告。


12. 联系方式

如有隐私相关问题、投诉,或应用内无法处理的删除/查阅请求:

我们致力于在 30 天内回应。


13. 生效日期与版本历史

版本 日期 摘要
1.0 2026-05-23 初始版本
1.1 2026-06-14 新增第 2(j) 节 Firebase Analytics 披露;同步更新第 3、4、8、9、11 节
1.2 2026-06-23 应用内广告(Google AdMob)由计划中未来用途改为现行披露;同步更新第 3、4、8、11 节
1.3 2026-06-23 审计日志保留措辞改为去标识化、无限期保存(移除未实现的 6 个月删除承诺);数据导出时效改为即时
1.4 2026-07-15 新增 Resend 次处理方(邮箱注册验证邮件);新增邮箱验证流程披露