PickyCat 隐私政策

最后更新:2026 年 10 月 3 日

PickyCat 是一个帮你记录猫吃了什么、并据此推荐罐头的 App。这份政策说明它收集什么、不收集什么,以及你如何撤回和删除。

一句话版本:默认情况下,你的数据只存在你自己的手机里,一个字节都不上传。只有你主动打开「匿名共享」这个开关,才会有一份不含身份信息的记录被发送出去,而且你随时可以关掉。

1. 只存在设备上的数据

你的猫的档案、每一顿喂食记录、心愿单和对比记录,都保存在你的设备本地存储里。App 默认没有账号,你不需要注册;不登录的情况下,我们没有任何办法从服务器上读取你的这些数据。如果你主动使用「通过 Apple 登录」并开启家庭共享,情况会不同——那部分单独写在第 4 节。

网页版请注意:这些数据保存在浏览器的站点存储里。Safari 会在你一段时间不访问后自动清除它,无痕窗口则完全不保存。这不是我们能控制的行为。设置里的「你的数据」→「备份与迁移数据」提供了导出备份的功能。

2. 匿名共享(默认关闭)

如果你打开这个开关,App 会把一份记录发送到我们的服务器,用于改进推荐算法——具体来说,是为了知道和你的猫条件相似的猫,对同一款罐头做出了什么反应。

2026 年 9 月 4 日起,这份记录多了三样:体重、心愿单和储藏柜。加它们是为了另一件事——如果你换了手机或者重装了 App,我们只能从这份记录里帮你还原;在这之前,能还原的只有猫和喂食记录,体重、心愿单和柜子是还不回来的。上传的只有罐头编号和数字,你在心愿单和柜子里写的备注不上传。

会上传的内容,完整清单

永远不会上传的内容

上传内容是按字段白名单构建的——代码里逐一列举了允许发送的字段,而不是「拿整份档案再删掉敏感的」。这个规则由一个自动检查脚本守着。

关于那三处自由文本

2026 年 8 月 20 日之前,这一页可以说「任何自由文本都不会上传」,而且代码里有一个检查在整份上传内容里扫描散文,逐字守着这句话。

现在有三处例外,而且只有这三处,每一处最多 24 个字:

后两处上传的理由是:光知道「有多少人的猫不在这个单子上」没有用,我们从第一版起就知道这个数字了;要把单子补齐,得知道缺的是哪几种。这两个框只在你选了「其他」之后才出现,你不写就什么也不传,而且一旦你把品种改回单子上的某一项,之前写的那句话就不再上传,也不再保留。

那个检查没有被关掉。它现在放行的是这一个字段、按路径写死,而不是「凡是看起来像补剂的都放行」;上传内容里其它每一个字符串仍然逐一被它读过。而且检查里同时钉着反面:把同样几个字放进任何别的字段,它必须仍然拦得住——那条断言哪天不再失败,就说明这个口子变大了。

如果你不想上传这些:补剂只用现成的那三个、不用「+自定义」;品种和花色不选「其他」,或者选了「其他」但把框留空;或者干脆关掉「匿名共享」,那样什么都不会上传。

关于那串随机数字

它是在你的设备上用系统的密码学随机源生成的,和你的姓名、邮箱、设备号都没有关系,在任何其它地方也没有含义。它存在的唯一目的,是让同一只猫的多次上传能被识别为同一只猫,而不是被当成很多只不同的猫。

按苹果 App Store 的分类口径,因为记录通过这串数字被关联在一起,这属于「与您关联的数据」(Data Linked to You)。我们照实申报。

3. 拍照认罐的答案(默认关闭)

App 里可以拍一张罐头的照片,它会认出标签上的字,给你三个候选让你挑是哪一款。你挑的那一下,就是一次「正确答案」——手里拿着实物的人告诉我们认得对不对。这是唯一能量出识别准不准的东西。

在「设置」里把「我挑完之后,把答案发回去」打开之后,会上传的是:

照片本身不会上传。它只存在你这台手机上。服务器上那张表里根本没有存照片的字段,就算以后哪个版本想传也没地方落。代码里也钉了一条自动检查,一旦上传内容里出现照片路径就会构建失败。

这些内容里不含任何身份标识:没有猫、没有记录、没有那串随机数字、没有任何能认出你或你手机的东西。一行就是「某个标签上的几个词 + 三个商品编号 + 哪个是对的」。

这是独立于「匿名共享」的另一个开关,两个互不影响,都默认关闭。不合并,是因为同意共享猫的进食记录,和同意把相机读到的东西发出去,不是同一件事。

关于删除:正因为这些内容里没有任何标识,我们无法找出「你的」那几行——没有线索可查。如果你不希望它们被上传,把这个开关关掉即可,关掉之后不会再发送任何一条。

4. 账号与家庭共享(可选,默认没有)

这一节和上面第 2 节说的是两件完全不同的事,请分开读。第 2 节的「匿名共享」是一串与你无关的随机数,只上传、我们从不读回,你的猫的名字和照片永远不离开你的手机。本节的「账号」正好相反:登录之后,你的完整记录会保存在我们的服务器上,并且会被读回到你和家人的手机上。两者互不影响,可以只开其中一个、两个都开,或者两个都不开。

不登录,本节完全不适用。不登录时,App 的行为和以前一模一样,不会有任何一个字节因为这个功能而离开你的设备。

登录方式:仅「通过 Apple 登录」。我们从 Apple 收到一串代表你的稳定标识(sub),我们只保存它的哈希值,不保存你的邮箱、也不保存你的姓名。你在 App 里给自己起的称呼(例如「爸爸」)由你自己填写,仅供你的家庭成员看到。

登录后保存在服务器上的内容:你的猫的档案(包括名字、年龄、品种等你填写的信息)、每一顿喂食记录、储藏柜、心愿单及其备注、体重记录、对比记录、选罐原则与预设,以及你自己录入的罐头。简单说,就是「你在 App 里记的东西」的完整副本。

照片不上传。猫的照片和你拍摄的罐头照片保留在拍摄它的那台手机上,不会同步给家庭成员,也不会保存到服务器。

家庭共享:你可以生成一个 24 小时内有效、只能使用一次的邀请码。使用该邀请码加入同一个「家庭」的成员,可以看到并修改上述全部内容。这是这个功能的目的:一家人一起喂同一只猫。请只把邀请码给你信任的家人。

登录同时包含第 2 节的那项同意。(2026-09-04 起)登录之后,你的记录除了替你保存,也会参与第 2 节说的那些统计——「别的猫都在吃什么」,也就是匹配度分数的来源。登录界面上会写明这一点。退出登录会把这项同意还回你登录之前的状态,不会留着;不想参与,不登录即可,App 的其他功能完全不受影响。

登录之后,我们会把这台手机上已经有的那两种匿名标识和你的账号对上号(2026-09-04 起):投稿用的设备码,以及每只猫的匿名记录编号。这是为了在你写信来问「我的记录没了」或者「把我的数据删掉」时,我们够得到你登录之前留下的东西 —— 在这之前,那只能靠你自己把一串数字抄给我们,而手机已经丢了的人抄不出来。

只报已经存在的,不会因此新建。如果你从没投过稿、也从没打开过匿名共享,那你本来就没有这两种编号,登录也不会给你造一个。

这条对应关系不是一把钥匙。它只是我们人工处理求助信时的第一条线索,本身不能用来读取、删除或还原任何记录 —— 那几步仍然要另外核对身份。删除账号时它一并删除。

不同步的内容:你所在的时区与语言、通知设置、当前选中哪只猫,以及各类本地缓存,都留在本机,不会上传,也不会影响家人的手机。

5. 出错时的诊断(自动发送)

App 打不开、某一屏出错、或者恢复备份失败的时候,会自动把一小段诊断信息发回给我们。这一节讲的是它里面有什么、为什么是自动的。

会发送的内容:

不会发送的内容:任何一格数据里的值。猫的名字、喂食记录、体重、心愿单、照片——一条都不会。上面那些是尺子读数,不是内容。

为什么是自动的?因为在这之前它是「你按一下才发」,而按钮只在 App 完全打不开时才会出现。真正常见的两种情况——「卡了一次,下次又好了」和「开了二十秒才开,但最后开了」——你那边根本看不出出了事,也就永远不会有人去按。结果就是最常见的两种故障,我们按设计永远不可能知道。这个改动只改了「谁决定发」,没有改「发什么」。

数量是有上限的:同一次故障最多自动发两条,「开得慢」这一种每个版本每台手机只发一条,同一个报错一次使用中只发一条。恢复备份时如果只是粘贴的内容不是备份、或者备份里没有猫,什么都不发。

启动计时(2026-10-05 起):除了出错的时候,每台手机每天最多还会发一条「这一次打开花了多久」——从 App 开始启动到首页出来的毫秒数,以及分在哪几段(系统启动、载入程序、读手机上的数据、首页、推荐)。和上面一样只是尺子读数:时间、App 版本、系统版本、屏幕尺寸和那个设备编号,没有任何一格数据的值。中途被切到后台的那次启动不发。这是为了让 App 打开得更快:在这之前,我们只知道慢到出错的那几次,平常一次要等多久没人知道。

「导出我的数据」那个按钮永远是手动的:那一份是你的完整记录,任何自动流程都不会碰它。

6. 我们不做的事

7. 第三方

共享的记录存放在我们自己的服务器上,位于中国广州(腾讯云)。数据库由我们自己运行,不再经过任何数据库托管服务商。除此之外没有任何第三方接收这些数据。App 内没有集成任何分析 SDK、广告 SDK 或社交 SDK。

2026 年 8 月 20 日之前,这些数据存放在境外的 Supabase 上。已经安装的旧版本 App 在用户更新之前仍然会继续上传到那里——地址是在打包时写进 App 的,我们无法远程改变一个已经装好的版本。

需要如实说明的一点:和任何网络服务一样,服务器在接收请求时会看到你的 IP 地址,托管服务的访问日志中可能会短期保留它。我们不会把它和上传的内容关联起来使用。

8. 保留多久

共享记录会长期保留,因为研究口味变化本身就需要历史。由于其中不含任何身份信息,它不会随时间变成关于「你」的档案。

第 5 节那些诊断保留一年。它们的用处全在「哪个版本上出了什么」,一个版本退役之后就没有意义了。

9. 撤回与删除

删除账号:打开 App →「设置」→「账号与家庭」→「删除我的账号」。这会彻底删除你的账号和服务器上属于你的那份记录。你手机上的记录不受影响,一样都不会少。如果你的家庭里还有其他成员,共享的那份记录会保留——那也是他们的记录。如果你是最后一个成员,整个家庭的记录会一并删除。

删除账号不包括第 2 节那份匿名共享记录。(Zhuo 2026-09-04 的决定。)那一份是去掉了姓名、照片和自由文本之后用来改进推荐的,它的删除走第 2 节说的那条路。不同的是:如果你登录过,我们能自己找到它——第 4 节说的那条对应关系就是为此存在的,所以你不再需要自己把那串编号抄给我们,写信说一声就行。

退出登录:在同一个页面上。退出登录只是停止同步,不会删除服务器上的内容,也不会动你手机上的任何东西。

停止共享:打开 App →「设置」→「匿名共享」→ 关闭「共享〈她的名字〉的记录,也用上别的猫的」这个开关。立即生效,之后不再有任何数据上传,尚未发出的排队内容也会被丢弃。

删除已经共享的内容:在同一个页面上,开关打开时会显示一串数字,那是你的记录在服务器上唯一的标识。把它复制下来发到下面的邮箱,我们会删除对应的记录。这串数字只在开关打开时显示,所以打算要求删除的话,请在关掉共享之前先复制下来;已经关掉了也不要紧——把开关重新打开就会再显示同一串数字,它一直存在你的手机上,不会改变。

请理解为什么必须这样做:正因为服务器上没有任何能指向你的信息,我们无法凭姓名或邮箱找到「你的」那几行。那串数字是唯一的线索。如果你已经卸载了 App 或清空了数据,那串数字也随之消失,我们就无法再定位这些记录了——它们此时已是无法与任何人关联的匿名数据。

删除诊断记录:第 5 节那些是按设备编号存的,所以这一类反而好删。把邮件发到下面的邮箱说一声即可;如果你曾经在 App 里给我们发过消息或投过稿,那些内容带的是同一个编号,我们能对上。

10. 儿童

本 App 不面向 13 岁以下儿童,也不会有意收集儿童的任何信息。

11. 政策变更

如果将来收集的内容发生变化,我们会更新本页并修改顶部的日期。扩大收集范围时,会重新征求你的同意,而不是沿用旧的授权。

12. 联系方式

隐私相关问题或删除请求,请联系:pickycatapp@gmail.com