生效日期:2026-05-23 — 最后更新:2026-07-15
Reading Pal 是一款阅读记录与番茄钟计时应用,由 林承葦(Darren Lin)(个人开发者,台湾)运营。本政策说明您在使用 Reading Pal 时,我们收集哪些个人信息、收集目的、向谁共享,以及您可行使的相关权利。
本政策适用于 Reading Pal 移动应用及其后端 API。不适用于您所关联的第三方服务(如 Google)——此类服务由其各自的隐私政策规范。
| 字段 | 来源 | 目的 |
|---|---|---|
| 电子邮件地址 | 您(注册时)或 Google OAuth | 账号识别、登录、账号找回 |
| 显示名称 | 您或 Google OAuth | 在应用内显示 |
| 头像 URL | Google OAuth(如适用) | 个人头像 |
| 密码哈希值(bcrypt) | 您(仅限邮箱+密码注册) | 身份验证——我们从不存储或查看您的明文密码 |
| 语言与时区 | 注册时设置 | 界面本地化;确保通知在正确时间送达 |
sub)、电子邮件、email_verified 标志,以及原始 id_token 载荷(用于验证审计)。最长保留至账号删除为止。| 字段 | 目的 |
|---|---|
| 匿名设备 ID(设备端生成的 UUID) | 将推送令牌与使用片段关联至特定设备,且不关联至手机硬件标识符或 IMEI |
| FCM 推送令牌(Firebase 云消息) | 向您的设备发送推送通知 |
| 应用版本与操作系统版本 | 崩溃诊断;兼容性检查 |
每次对后端的请求均记录以下信息: - IP 地址(用于限流、安全防护与滥用检测——每 30 天自动轮换清除) - HTTP 方法、URL 路径、响应状态码、响应延迟、请求 ID
我们在生产环境不记录请求体。
我们仅针对以下四种事件类型维护审计日志:deletion_requested、deletion_cancelled、deletion_executed、export_requested。每条事件记录以下信息:
- 时间戳
- 事件类型
- 数字型用户 ID
- IP 地址、设备 ID,以及您填写的删除原因(如有提供,上限 2,000 字)——这些元数据字段在账号永久删除时即被设为 NULL;仅事件类型、时间戳与数字型用户 ID 在该时间点后继续保存
这些记录在您的账号删除后仍予保留,并无限期保存以供合规验证之用——以证明我们已履行您的删除或导出请求。账号永久删除后,留存记录已完全去标识化:仅包含事件类型、时间戳,以及一个不再对应任何真实用户的数字型用户 ID(账号本身已不存在)。记录中不含任何个人身份信息,亦无任何阅读内容。
当应用崩溃或后端发生错误时,我们发送至 Sentry 的报告包含: - 堆栈跟踪 - 您的数字型用户 ID(不含电子邮件或显示名称) - 应用版本与环境标签 - 请求 URL 路径(已移除查询字符串)
我们不发送:您的电子邮件地址、显示名称、IP 地址、请求体、Cookie、刷新令牌,或任何自由文本笔记内容。
Sentry 保留这些报告 7 天(免费版默认值)。Sentry 数据托管于欧盟地区(de.sentry.io)。详见第 4 节。
我们使用 Firebase Analytics(Google 服务)了解整体使用模式,以改善应用体验。我们发送的事件与参数严格限制于以下范围:
| 事件/字段 | 参数 | 目的 |
|---|---|---|
screen_view |
screen_name、screen_class |
页面浏览与离开点漏斗分析。值为不含个人身份信息的路由字面(/library、/library/[bookId]、/profile/shop 等);动态 ID 已以字面占位符替换 |
sign_up、login、guest_start |
无 | 认证漏斗转化率。不附带邮箱或账号数据 |
add_book |
category(如 fiction) |
阅读漏斗起点与内容类型偏好分析。仅到类别代码层级,绝无书名、书本内容或 ISBN |
start_reading_session |
无 | 阅读漏斗:开始阅读。不带书籍 ID 或书名 |
complete_reading_session |
duration_bucket(<15、15-30、30-60、60+ 分钟) |
阅读漏斗:完成阅读及投入时长分布。仅使用粗分桶,绝无精确秒数 |
view_subscription、begin_purchase、purchase_success |
product_id(SKU 常量) |
变现漏斗。product_id 为静态 SKU 字符串,非个人数据——不含购买凭证、金额或付款信息 |
view_shop、redeem_item |
item_id(商品常量) |
商店漏斗。item_id 为静态常量——不带数量或余额 |
rewarded_offer_shown、rewarded_started、rewarded_earned |
无 | 激励广告漏斗:曝光→开始观看→看完获奖 |
Firebase 内置:engagement_time、session_start、first_open |
自动 | Firebase SDK 自动采集的工程指标,我们未手动写入 |
我们不发送给 Firebase Analytics 的数据: 电子邮件地址、显示名称、书名、笔记内容、阅读时间戳、精确阅读时长、ISBN、购买凭证,或任何自由文本内容。
Firebase Analytics 也会自动将事件关联至 App Instance ID(Firebase 生成的每次安装标识符,清除应用数据或重装即可重置)及 Android 上的 Android 广告 ID(由 Google 管理的可重置设备级标识符)。这些标识符由 Firebase SDK 自动收集,我们未手动附加。
Firebase Analytics 的数据由 Google 依其隐私条款处理。详见第 4 节。
| 目的 | 使用的信息 |
|---|---|
| 提供服务——跨设备同步书库、记录阅读片段、计算阅读统计数据 | 第 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。
| 提供方 | 角色 | 共享信息 | 地区 |
|---|---|---|---|
| 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 供奖励验证(非用于广告定向) | 全球 |
我们从不将个人信息出售给任何第三方。
您的所有账号、书库及阅读数据均存储于 DigitalOcean 法兰克福(德国,欧盟)数据中心(区域:FRA1)。欧盟用户的数据不会离开欧盟境内。
Sentry 崩溃报告同样使用 Sentry 的欧盟地区(de.sentry.io)。
部分次处理方(Google、AdMob)在全球范围内运营,可能依其自身隐私条款在不同地区间传输数据以维持服务可靠性。
您可在应用内直接行使大多数权利,无需发送电子邮件。
| 权利 | 行使方式 |
|---|---|
| 查阅 | 设置 → 账号 → "导出我的数据"——立即生成完整 JSON 导出文件供下载 |
| 更正 | 设置 → 个人资料——直接编辑显示名称及其他个人资料字段 |
| 删除 | 设置 → 账号 → "删除账号"——启动 30 天宽限期。在此期间重新登录即可取消。30 天后,您的所有个人信息将从数据库中永久删除(依第 2(f) 节保留一条去标识化审计记录以供合规验证)。 |
| 可携性 | 与查阅权相同的 JSON 导出 |
| 限制处理 | 请发送电子邮件(第 12 节) |
| 拒绝营销 | 设置 → 通知 → "营销推送"——关闭(默认值即为关闭) |
欧盟/欧洲经济区用户: 您亦有权向所在国家的监管机构(如各国数据保护机构)提出投诉。
台湾用户: 相关权利依据《个人资料保护法》行使。
我们将于收到请求后 30 天内予以回应。
Reading Pal 并非面向 13 岁以下儿童设计。我们不会在知情情况下收集未满 13 岁用户的个人信息。如您认为有儿童创建了账号,请发送电子邮件至 tn08869679@gmail.com,我们将删除该账号。
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 |
| 数据类别 | 保留期限 |
|---|---|
| 账号、书库、阅读片段、设置、成就、积分 | 使用期间保留;删除账号后进入 30 天宽限期,期满后永久删除 |
| 审计日志(删除/导出事件记录——不含个人阅读内容) | 去标识化记录(事件类型+时间戳+不再对应任何真实用户的数字型用户 ID)无限期保存,供合规验证;IP、设备 ID 与用户填写的原因在账号永久删除时设为 NULL |
| 服务器访问日志(IP 地址、请求元数据) | 30 天,到期后自动轮换清除 |
| 崩溃报告(Sentry) | 7 天(Sentry 免费版默认值) |
| 刷新令牌记录 | 至令牌过期或明确撤销为止 |
| Firebase Analytics 事件数据 | 依 Google 的保留设置(用户级数据默认 2 个月;汇总报告由 Google 另行保留)。详见 Google 数据保留说明。 |
营销推送通知默认为关闭。您可主动开启:设置 → 通知 → "营销推送"。您可随时在同一位置关闭。
我们不发送营销电子邮件。
重大变更(新增信息类别、新增次处理方、扩大现有信息用途)将通过应用内横幅,于生效前 30 天公告。更新版本将标注日期。
轻微修订(错别字修正、不影响您权利的说明澄清)将立即生效,不另行事先通知。
预先披露的未来变更:
重大变更(新增信息类别、新增次处理方、扩大现有信息用途)将通过应用内横幅,于生效前至少 30 天公告。
如有隐私相关问题、投诉,或应用内无法处理的删除/查阅请求:
我们致力于在 30 天内回应。
| 版本 | 日期 | 摘要 |
|---|---|---|
| 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 次处理方(邮箱注册验证邮件);新增邮箱验证流程披露 |