Pattio · legal

隐私政策

最后更新: 2026年9月28日(版本 1.2)

三句话说清楚

Pattio 无需账户即可在你的设备上完整运行:如果你不创建账户,任何地方都不会有我们的东西。如果你创建了账户,你同步的内容会使用只有你的设备才有的密钥加密传输,我们既没有这把密钥,也无法找回它。唯一的例外(我们要说清楚,因为这很重要)是你特意共享的内容:这些内容必须能被服务器读取,受邀的人才能打开,因此我们也有可能读到。而且仅限于这些内容,别无其他:如果你只共享一个元素,服务器只能读取这个元素以及它所在看板的名称;看板的其余部分(其他笔记、区域、涂鸦)仍然是加密的。如果你共享整块看板,那就是全部内容。

App 里没有广告,没有追踪器,也不会把数据卖给任何人,这一点不会改变。自2026年8月起,App 确实加入了假名化的产品分析:只有少量操作名称(例如“打开了 App”“添加了一张投票类卡片”),不含你的任何文本、任何属于你的标识符,也不含任何数字;数据存放在欧盟境内的服务器上,你可以在“设置”▸“隐私与安全”▸“隐私”中用开关将其关闭(§3.7)。我们说“假名化”而不是“匿名”,是因为数据中带有这次安装的一个随机标识符:它不是你的名字,不是你的邮箱,也不是你的账户,并且在你关闭开关时会被删除。除此之外,通过共享链接打开的网页有自己的访问分析,只有在访问者同意时才会运行(§3.6);本网站也有自己的访问分析(§3.11)。另外,如果你开启了 Pattio 最新消息并允许了通知,这些消息会以通知形式送达:为此会保存一个与你的账户毫无关联的 Apple 通知令牌(§3.13)。

1. 谁是数据控制者

我们没有设立数据保护官:本业务不属于欧盟《通用数据保护条例》(GDPR)第 37 条要求必须设立数据保护官的情形。

  • 控制者:Joan Cama Ribot
  • 商业名称:Somia Digital
  • 税号(NIF):41531670H
  • 地址:Carrer de Sant Joan, 16, 17200 Palafrugell (Girona),西班牙
  • 联系邮箱:hola@somiadigital.com

2. 原则:本地优先

Pattio 是一款本地优先(local-first)的 App。看板、笔记、照片、绘图以及你放进去的一切,都保存在你设备上的数据库里。没有账户时,没有任何一个字节会离开手机前往我们的服务器:云端没有副本,没有我们的标识符,也没有我们的文件。

创建账户是可选的,只有一个用途:在你的设备之间同步,以及(如果你愿意)共享看板。

3.1. 账户

如果你通过 Apple 登录,可以隐藏你的邮箱:Apple 会给我们一个转发地址,我们看不到真实地址。如果你通过 Google 登录,由 Google 参与验证。App 会向 Apple 请求全名,但不会保存在任何地方:只使用身份令牌。

密钥指纹是一个截短的加密摘要(截断的 SHA-512)。它无法用来还原密钥,也无法解密任何内容:只用于比对。

当你完成(或跳过)欢迎流程时,你对《条款》的接受记录会保存在你的设备上,其中只有两项内容:文件版本和时间点。没有标识符,没有语言,也没有任何个人数据。如果你有账户,它会和其他内容一样放在加密保险库中传输(也就是说我们无法读取);如果没有账户,它不会离开设备。在这项功能出现之前就已安装 Pattio 的人没有这条记录,我们也不会替他们编造:一次没人见过的接受算不上证据。

  • 电子邮件地址 — 识别你并让你登录(邮箱验证码、Apple 或 Google)— 法律依据:履行合同,GDPR 第 6.1.b 条 — 保存至账户存在期间。
  • 用户标识符(UUID)— 把你的内容与你的账户关联起来 — 第 6.1.b 条 — 账户存在期间。
  • 密钥指纹(key_check)— 当某台设备使用的不是你的密钥时提醒你 — 第 6.1.b 条 — 账户存在期间。
  • 已接受的《条款》版本及接受时间 — 能够说明你接受的是哪个版本的合同、在哪一天接受 — 第 6.1.b 条(证明合同存在)— 账户存在期间。

3.2. 私人看板的内容

这些内容使用 XSalsa20-Poly1305(NaCl secretbox)进行端到端加密传输和存储。密钥在你的设备上生成,存放在 iOS 钥匙串中,永远不会到达我们这里。我们看到的只是一串无法读取的字节。

密钥如何到达你的第二台设备,以及代价是什么。为了让你在 iPad 或 Mac 上登录同一个账户时不必手动抄写任何东西,密钥也会作为可同步的钥匙串项目保存(即 iCloud 钥匙串):这样它会在同一个 Apple 账户下的设备之间自动传递,由 Apple 进行端到端加密,而且从不经过我们的服务器。我们依然看不到它。

这样做的代价,我们在这里说明,而不是放在脚注里:它把你内容的安全性与你 Apple 账户的安全性绑在了一起——谁能进入某人的 iCloud 钥匙串,谁就拿到了解密其看板的密钥。这和钥匙串对待它保存的所有密码(包括银行密码)完全一样。恢复码仍然存在,仍然是备用方案:适用于关闭了 iCloud 钥匙串的人、更换 Apple 账户的人,以及希望密钥不依赖 Apple 的人。

如果你同时丢失了密钥和恢复码,没有人能找回原来的内容——我们也不能。这是真正加密的代价,最好事先知道,而不是事后才知道。

处理的数据:看板、区域、元素和笔迹的加密内容,以及加密文件(照片、视频、扫描件、绘图、文档)— 目的:在设备之间为你同步 — 法律依据:GDPR 第 6.1.b 条 — 期限:直到你删除它们或删除账户。

即使内容是加密的,我们仍然能看到以下信息(要让同步正常工作,这些无法隐藏):

  • 每一行属于哪张表(一个元素、一块看板、一个区域……);
  • 该行的标识符(在你设备上生成的 UUID,本身没有含义);
  • 创建、修改和删除的时间戳;
  • 每个文件的路径和字节大小,因为我们靠它计算你占用的空间,也按它向你收费。
  • 也就是说:我们可以知道你有 412 个元素、某个星期二的十一点改过其中一个,但不知道里面写了什么。

3.3. 你共享的内容

这里没有端到端加密,这一点必须直说。在没有你密钥的人的浏览器里打开的内容,必须以可读的形式到达那里,因此在服务器上也以可读形式保存。在共享期间,管理我们基础设施的人有可能读取它的内容和照片。停止共享后,它会恢复加密传输。

而“这些内容”恰好就是你共享的东西,别无其他。共享有两种范围,两者在操作前都会用文字说明:如果你只共享一个元素,以明文形式出去的是这个元素、它的照片,以及它所在看板的名称(连同表情符号和颜色)——接收者的页面需要能说明它来自哪里——看板的其余部分仍然加密;如果你共享整块看板,那么所有内容都会以明文形式出去:所有笔记、区域、涂鸦、笔记本和照片。

实用的原则:不愿意放到服务器上的东西,就不要通过链接共享。

受邀者获得的是匿名会话:我们不要求他们提供邮箱或账户,除了他们自己填写的名字外,不收集任何其他数据。

访客的名字到底谁能看到。名字的作用是让大家在投票中知道谁投了什么——所以能看到它的,是其他能读取同一内容的人,没有别人。还有一点反方向的说明,同样属实:所有者和有账户的成员投的票不显示名字,因为他们不在访客名单里。页面知道名字时就显示名字,并且总是显示票数,不会编造一个“某人”。

  • 你共享的内容及其文件的明文 — 让受邀者可以从浏览器打开 — 第 6.1.b 条 — 直到你停止共享或将其删除。
  • 受邀者的邮箱 — 在他们用该邮箱登录时授予访问权限 — 第 6.1.b 条 — 直到你撤回邀请。
  • 打开访客链接的人填写的名字 — 让其他人知道谁写了什么、谁投了票 — 第 6.1.b 条 — 直到停止共享。
  • 共享看板中各项投票的选票 — 计票 — 第 6.1.b 条 — 同上。
  • 链接令牌(token)— 无需账户即可打开看板 — 第 6.1.b 条 — 直到你撤销它。
  • 如果共享的是整块看板,能看到访客名字的是拥有该看板的人(所有者、成员以及该链接的其他访客)。
  • 如果共享的是一个元素,只能通过该元素看到名字,而且只显示在其中投过票的访客:打开某个投票链接的人拿不到看板的访客名单。
  • 访客的链接令牌绝不会被其他访客看到。服务器只提供名字和选票的标识符,绝不提供该行的其他任何内容。

3.4. 购买

订阅由 Apple 通过你的 App Store 账户收费:我们永远看不到你的银行卡、账单姓名或地址。告诉我们“这个人有 Plus”的是 RevenueCat,一家订阅中间服务商,我们只向它提供你的用户标识符(别无其他:没有邮箱,也没有名字)。它的 SDK 会自行收集一些设备技术数据以实现其功能(例如 Apple 的供应商标识符(IDFV)、设备型号和国家或地区);这是它自己的行为,在它自己的政策中有说明。

  • 用户标识符以及购买和续订记录 — 了解你使用哪个方案、可用多少空间 — 第 6.1.b 条 — 账户存在期间。

3.5. 设备权限

Pattio 不会请求通讯录、健康、蓝牙或本地网络权限,也从不在后台使用定位。

你为元素设置的提醒是本地的,这有具体的含义。当你让倒计时、即将到来的事件或习惯提醒你时,Pattio 会告诉你手机的操作系统在某个时间叫醒你。这些提醒不经过任何服务器,也从不从外部发送:我们永远收不到你的任何提醒,也无法知道你是否收到或是否打开了它。锁定屏幕上显示的只有元素的标题,别无其他——绝不会显示卡片里面的内容。

Pattio 最新消息则是另一回事:它们由我们从服务器发出,通过 Apple 的通知服务送达。详见 §3.13。

“聚焦”索引里只有标题。为了让你能在主屏幕的搜索中找到某块看板或某张卡片,Pattio 会把看板名称、元素标题、它的表情符号以及打开它的地址放进“聚焦”(Spotlight)索引。仅此而已:不包括笔记正文、清单条目、任何转写文本或任何缩略图。这个索引属于你手机的操作系统:它就在这台设备上,没有人同步它,我们也永远收不到其中任何内容。如果你卸载 App,它也会随之消失。

App 锁定由 iOS 管理,我们收不到你的任何信息。如果你开启锁定(“设置”▸“隐私与安全”▸“锁定”),Pattio 会请求系统通过面容 ID、触控 ID 或设备密码来识别你。Pattio 永远收不到任何生物识别数据——不是你的脸,不是你的指纹,也不是你的密码:它得到的只是“是”或“否”,不会保存任何东西,也没有任何东西离开手机。唯一保存的是锁定是否开启以及多久后再次询问,这两项都是这台设备上的选择,不会传到任何地方。

锁定在一种情况下、也只在这一种情况下会自动关闭。如果你在 Pattio 锁定开启时取消了手机的解锁密码,这台设备上就不再有任何能打开它的钥匙:此时 Pattio 仍会照常打开,用一条提示告诉你,并把这项设置保存为关闭。这是有意为之,我们在这里说明,因为这是一个决定而不是错误——本地锁是挡在拿着手机的人面前的一道帘子,而不是防着你自己的保险箱:严格执行会让你永远被锁在自己的笔记之外,甚至连关闭它的开关都碰不到。出于同样的原因,如果无法读取这项设置,App 也会照常打开。

  • 相机 — 当你拍照放到看板上时 — 照片会像其他照片一样放到看板上。
  • 照片图库 — 当你选择照片或视频时 — 同上。
  • 定位(仅在使用期间)— 仅当你点按“当前位置”时 — 由 Apple 把坐标转换为地址。如果你把卡片保存到已同步的看板,坐标会加密存放(如果看板处于共享状态则为明文)。天气从不请求这项权限:如果你已经授予,它会读取系统保存的最后一个位置并做取整处理(§3.10)。
  • 麦克风和语音识别 — 当你点按“录音”把语音笔记放到看板上或口述一份清单时 — 声音留在你的设备上:转写由你自己的手机完成,既不发送给我们,也不发送给 Apple。
  • 日历和提醒事项 — 当你放一张日程卡片时 — 在设备上读取,不会离开设备。我们不会上传任何内容。
  • 通知 — 第一次为某个元素开启提醒时,或在“设置”▸“提醒”中开启“Pattio 最新消息”时;绝不在启动时请求 — 对于提醒:不涉及任何数据,提醒由你自己的设备安排和送达;对于最新消息:见 §3.13。

3.6. 访客网页门户及其分析

本节只涉及有人给你发送 Pattio 链接时打开的那个网页(app.pattio.app)。本节描述的内容(Google Analytics、Cookie 和横幅)在 App 内不存在,将来也不会有。App 有自己的产品分析,那是另一回事,由另一家服务商提供,也有自己的开关:见 §3.7。

门户始终会保存的内容,以及我们为何不征求你的许可。当你打开链接时,浏览器会保存一个匿名会话,正是它让你进入看板。没有它就没有页面。这是为你提供你所请求的服务所严格必需的存储,因此《电子隐私指令》(ePrivacy Directive)第 5.3 条免除了对它的同意要求。没有它链接就打不开,我们不会为这样的东西征求你的许可。

未经你许可,门户不会做的事。如果门户配置了分析,在进行任何统计之前,它会弹出一条通知询问你,提供两个同样容易选择的选项:接受和拒绝。在你作出回答之前,以及你选择拒绝时,不会从 Google 下载任何一个字节,也不会保存任何统计 Cookie。无论你选择接受还是拒绝,页面的显示和功能都完全一样:没有任何门槛。

处理的数据:页面访问(三类页面中的哪一类、根据 IP 推断的大致国家或地区、浏览器和设备类型)— 目的:了解有多少人打开共享链接 — 法律依据:第 6.1.a 条,你的同意,且仅限于此 — 期限:Google Analytics 媒体资源所配置的保留期。

永远不会发送的内容,这才是关键:链接令牌(它就是看板的钥匙)、任何看板或元素的标识符、任何访客名字以及任何内容。发送的路径不是地址栏里的路径,而是三个固定字符串之一(/convidat、/e 或 /),代码里专门为此写死。也没有任何自定义事件:只有一次访问,仅此而已。

由谁处理。Google Ireland Limited / Google LLC 作为数据处理者,IP 经过匿名化处理(Google Analytics 4 默认如此),Google 信号和广告个性化均已停用,并配置了 Consent Mode v2,默认拒绝所有权限。向美国的传输依据标准合同条款以及欧盟-美国数据隐私框架(Data Privacy Framework)进行(§4)。

你可以随时改变主意。门户任何页面的底部都有“Cookie”,点击即可重新打开询问。你的选择会在你自己的浏览器中保留十二个月,并记录目的的版本:如果哪天目的发生变化,会重新询问你,而不是沿用你以前的“同意”。

而目前这项功能是关闭的。只要门户还没有配置任何分析媒体资源,就既没有通知也没有统计:页面只保存第一段所说的匿名会话。

3.7. App 的产品分析

它是什么。自2026年8月起,App 会发送少量假名化的使用统计,只有一个用途:了解哪些功能真正有人在用,从而决定把工作重点放在哪里。它不是广告,不是追踪,与网页门户的统计(§3.6)也毫无关系——那是另一个系统,在另一个地方,回答的是另一个问题。

轻点一下就能关闭,不会失去任何功能。开关位于“设置”▸“隐私与安全”▸“隐私”。它默认开启,同一个页面会向你展示 App 能够发送的全部名称的完整原文列表(直接从代码中读取,而不是手写的)。关闭它不会移除 App 的任何功能。

永远不会发送的内容,这才是关键:你的任何文本和内容(标题、笔记、照片、文件、绘图都不会)、任何看板、元素或共享链接的标识符、任何名字或邮箱地址、任何数字(你有多少块看板、占用多少空间、任何坐标都不会),也不会发送任何关于谁与谁共享的信息。代码中有一个过滤器,带有一份封闭的列表,规定哪些内容可以离开设备;没有任何路径可以绕过它,而且每次改动都有自动化测试进行检查。

你设备的信息也不会发送。统计服务默认会发送屏幕尺寸、设备型号和类型、操作系统及其版本、语言和时区。Pattio 会在这些信息离开设备之前,用同一个封闭列表过滤器把它们全部剔除。

假名化,这个词很重要。不发送任何用户标识符,不发送你的邮箱,也不建立任何个人档案。基于 IP 的地理定位已停用,会话录制(“session replay”)也已停用:App 从不录制屏幕。不过,只要开关保持开启,这个随机安装标识符就不会变,因此同一台设备的统计数据可以相互关联。这在 GDPR 的意义上不算匿名——而是假名化——这也是为什么法律依据是正当利益(第 6.1.f 条),并附有反对权。

数据去向。发送到 PostHog(EU Cloud,德国法兰克福,欧盟境内),地址为 eu.i.posthog.com,PostHog 作为数据处理者(§4)。如果 App 没有内置密钥,就什么都不发送:编译时没有该服务密钥的版本会保持“待命”状态,不会初始化任何东西,即使开关看起来是开着的。

  • 在 App 中执行的操作名称,仅此而已:打开 App、完成欢迎流程、打开指南和创建看板,这些不附带任何其他信息。有四项会附带一个来自封闭列表的标签:切换视图(软木板或网格)、添加卡片(笔记、投票、照片……)、更改主题(浅色、深色或跟随系统)以及开始或完成购买(Plus 或 Pro)— 目的:了解哪些功能在被使用,以决定我们在哪里投入工作 — 法律依据:第 6.1.f 条,正当利益,附有反对权,而反对权实际上就是“隐私”里的那个开关 — 期限:PostHog 项目中配置的事件保留期。
  • 发送统计数据的 App 版本 — 了解信号来自哪个版本 — 第 6.1.f 条 — 期限同上。
  • 这次安装的一个随机标识符,由统计服务生成,不是你的名字、邮箱或账户 — 避免把同一台设备的两条统计数据算作两个人 — 第 6.1.f 条 — 期限同上,并在你关闭开关时从设备上删除。

3.8. 我们不处理的内容

在此明确说明,并且可以通过查看代码来验证:

  • 没有任何追踪你的分析。没有 Firebase、Amplitude、Mixpanel、Segment,也没有任何会在不同 App 之间或在网上跟踪你的东西。整个项目中仅有的统计是:App 的产品分析(§3.7),假名化、带开关、基于正当利益;访客门户的访问分析(§3.6);以及本网站的访问分析(§3.11);后两者只有在你许可时才会运行。
  • 没有自动错误报告。没有 Sentry,也没有 Crashlytics。
  • 没有第三方营销通知,也没有与个人关联的令牌。Pattio 最新消息(§3.13)是唯一的远程通知——内容由我们撰写、面向所有人,绝不是第三方广告,也不是个性化内容——而且无从得知它的令牌属于谁。你为元素设置的提醒由你自己的手机安排和送达(§3.5)。
  • 没有任何广告,也没有任何广告网络。
  • 没有任何追踪。App 不请求追踪许可(ATT),因为它不需要:它不使用 IDFA 或任何广告标识符,也不会出于广告目的与第三方或任何数据中间商共享你的任何数据。
  • 没有用户画像,也没有产生法律效力的自动化决策(GDPR 第 22 条)。
  • 不向任何人出售或转让数据。

3.9. 人工智能:全部在你的设备上

在这个版本中,没有任何通往云端的 AI 路径处于启用状态。App 既不会提出读取照片、扫描件或链接来向你建议生成什么内容(“智能捕捉”),也没有任何内置助手。这两项功能已经写好并经过测试,但不会在任何地方显示——没有按钮、没有选项、没有指令——因此没有任何东西能把文本发送到任何 AI 服务器。所以这个版本也不会为此向你请求任何许可:没有什么需要许可的。等它们回来的那一天,本节会在任何事情发生之前重新完整说明。

Pattio 确实会做的事情,全部在你的手机内完成,共有三件:读取照片和扫描件中的文字,让你可以通过其中出现的词语再次找到它们(由 Apple 的文字识别器 Vision 在设备上、在后台完成);按含义搜索,使用 Apple 在设备上的嵌入模型;以及口述笔记或清单,使用被强制离线工作的 Apple 语音识别器。这三项都不会有任何内容离开手机。

关于照片中的文字,详细说明如下。读取到的文字保存在卡片内、你的加密保险库中,因此和照片说明一样属于你的数据:它不会以文本形式显示在任何页面上——卡片上、PDF 中、共享看板的网页上都不会——App 对它唯一的用途就是让你搜索。如果你共享看板,它会随卡片一起,沿着照片本身已经走的同一条路传输。

还有一个细节,最好说清楚:共享看板的摘要(访客在页面顶部看到的主题列表)是根据卡片中出现最多的词语生成的,从照片中读取的词语和其他词语一样计算在内。这只会在你共享了整块看板时发生。

你可以在“设置”▸“隐私与安全”▸“读取照片中的文字”中关闭它。之后不会再读取任何照片;已经读取的文字会留在各自的卡片中,要删除它就得删除照片。

3.10. 天气

Pattio 在两个地方显示天气:主屏幕小组件,以及你可以钉到软木板上的“天气”元素。两者的工作方式相同,本段内容同时适用于两者。

天气预报由操作系统的服务 Apple WeatherKit 提供。没有其他服务商:当 WeatherKit 没有响应时,不会去找别人,卡片会用文字说明。

离开设备的内容:两个经过取整的坐标,别无其他。在查询之前,位置会被取整到小数点后一位(约 11 公里)——足以准确获取天气,却不足以说明你在哪里。不附带任何标识符、你的账户或任何看板数据。查询由 iOS 代表 App 发出,受 Apple WeatherKit 数据政策约束。

位置从哪里来,以及我们不会为获取它做什么。“你所在地”的天气读取的是系统已经保存的最后一个位置:它不会打开 GPS,不会请求任何权限,也从不在后台使用定位。如果没有授予定位权限,就不会查询:卡片会说明原因,你可以选择一个固定地点,这是唯一会保存在该行中的内容。

保存的内容。天气方面什么都不保存,只在卡片中保存最后一次读数的副本(温度、天气状况和时间),这样你导出的 PDF 和访客网页才有东西可显示。这些都不会发送到我们的任何服务器,其余的预报只存在于内存中,一小时后过期。

3.11. 本网站:支持表单和分析

本节只涉及 pattio.app,即介绍 Pattio 的这个网站。这里没有用户账户,你看板里的内容也从不经过这里。

如果你通过支持表单给我们写信,你会留下邮箱、留言以及你浏览时使用的语言;姓名是可选的,可以留空。我们用这些信息来回复你,不作他用。法律依据是你的同意(GDPR 第 6.1.a 条),你可以随时写信至 hola@somiadigital.com 撤回同意。表单由托管本网站的 Netlify(即 §4 中的数据处理者)处理:留言保存在它的后台,并通过邮件发送给我们。我们在处理咨询所需的期间内保存它,最长保存至咨询结束后十二个月。

本网站也使用 Google Analytics 4,但前提是你在 Cookie 通知中选择接受。如果你没有回答,或者选择拒绝,不会加载任何一个字节的 Google 代码。浏览器中保存了什么以及如何更改你的选择,详见《Cookie 政策》(/zh-hans/cookies)。

3.12. App 中的“想法与问题”信箱

在 App 内(“设置”▸“关于”▸“想法与问题”),你可以给我们写一个想法、一个错误、一项改进建议或任何其他内容。不需要账户。

发送的内容:你写的文字和你选择的类别(想法、错误、改进、其他);你的邮箱,仅当你填写时;一张截图,仅当你附上时(由你从照片图库中选择);以及 App 版本、构建号、平台和语言。不包含你软木板上的任何东西:没有看板、卡片、照片、账户,也没有任何标识符。

发送到哪里。发送到位于欧盟的 Supabase 服务器上的一个函数,该函数把留言保存到一张表中;如果启用了邮件通知,还会通过 Resend(Resend, Inc.,eu-west-1 区域,爱尔兰,欧盟)把副本发给团队。截图不会保存在表中:它只作为那封邮件的附件传输。

IP 地址。为了防止滥用,我们会统计同一来源一天内发来的留言数量。我们不保存 IP,而是保存一个混入当天日期的加密指纹:它无法还原,第二天就失效,也无法把不同日期的留言关联起来。

当留言无法通过服务器发送时,App 会打开你手机上的邮件 App 并填好文字:这时由你用自己的邮箱地址发送,不带截图。

法律依据是改进 App 的正当利益(GDPR 第 6.1.f 条)。你的邮箱(如果填写)只用于回复那条留言,不作他用。

每条留言最多保存 12 个月;如果事情提前了结,则保存时间更短。如果你希望我们提前删除,请写信至 hola@somiadigital.com。

  • 留言的文字和类别、邮箱(如果填写)、截图(如果附上;只通过 Resend 的邮件传输)、App 的版本、构建号、平台和语言,以及 IP 的每日指纹 — 阅读你告诉我们的内容,并在有邮箱时回复你 — 第 6.1.f 条,正当利益 — 最多 12 个月,如果事情提前了结则更短。

3.13. Pattio 最新消息

它们是什么。由我们撰写、从服务器发送的通用内容——版本更新、通知公告。绝不是第三方广告,也绝不是个性化内容。你为元素设置的提醒是另一回事,仍然是本地的(§3.5)。

如何送达。在 App 内,以最新消息页面的形式:App 打开时会向 Supabase 请求已发布的消息列表,不发送任何属于你的东西(和任何请求一样,Supabase 能看到 IP),这些消息中的图片也由 Supabase 提供。“已读”状态只保存在你的设备上。如果你愿意,也可以通过通知接收,由 Apple 推送通知服务(APNs)送达。

开关,以及何时请求权限。开关位于“设置”▸“提醒”▸“Pattio 最新消息”。它默认开启,但 App 打开时从不请求通知权限。如果你之前已经允许 Pattio 发送通知(例如为了某个提醒),并且没有关闭最新消息,App 会在打开时注册令牌,不会再问你。如果你之前没有允许,在你开启“Pattio 最新消息”之前什么都不会发生,届时由 iOS 向你请求权限。开关关闭时,App 内的最新消息页面也不会出现。

我们保存什么。如果你开启了最新消息并允许了通知,这台设备会在我们的数据库(Supabase)中保存一个 Apple 通知令牌、这次安装的一个随机标识符(由 App 生成,不是任何 Apple 标识符)、语言、App 版本、平台(iOS)以及 APNs 环境(测试或生产)。仅此而已:没有你的账户、没有你的邮箱、没有你在 Pattio 里的任何内容,也没有你的 IP。

而且数据库不允许把这个令牌与任何账户关联:有一条约束强制用户列保持为空,因此无论是现在,还是将来某个版本出错,都做不到。这张表是封闭的:任何公共角色都不能直接读取或写入它。

如何关闭,以及会删除什么。如果你关闭“Pattio 最新消息”,我们会从服务器删除令牌,该行会被标记为已关闭;App 不会再注册新的令牌。如果 Apple 告诉我们某个令牌已失效(例如因为 App 已被卸载),服务器会自动停用它。已关闭的行(随机标识符、语言和版本,已不含令牌)会在该安装存在期间一直保留。

法律依据是正当利益(GDPR 第 6.1.f 条),附有反对权,而反对权就是“Pattio 最新消息”开关,这与产品分析(§3.7)的情况相同。

  • Apple 通知令牌(APNs)、这次安装的随机标识符、语言、App 版本、平台和 APNs 环境 — 通过通知向你推送 Pattio 最新消息 — 第 6.1.f 条,正当利益,附有反对权,即“Pattio 最新消息”开关 — 令牌保存至你关闭最新消息或 Apple 告知其失效为止;已关闭的行(已不含令牌)在该安装存在期间保留。

4. 还有谁会接触数据(数据处理者)

我们没有自己的服务器:我们租用别人的服务器。所有服务商都签有数据处理协议(GDPR 第 28 条)。

国际传输。RevenueCat、Apple 和 Google 位于美国。这些传输依据欧盟委员会的标准合同条款,并在适用时依据欧盟-美国数据隐私框架(Data Privacy Framework)进行。Netlify 也位于美国,这项传输的依据是其数据处理协议中纳入的欧盟委员会标准合同条款。Resend 在欧盟境内的 eu-west-1 区域(爱尔兰)处理数据。你可以写信至 hola@somiadigital.com 索取这些保障措施的副本。

  • Supabase Inc. — 数据库和身份验证、Pattio 最新消息(§3.13)以及“想法与问题”信箱(§3.12)— eu-central-1(德国法兰克福),位于欧盟境内。
  • Cloudflare, Inc.(R2)— 存储同步的文件(如果看板是私人的则已加密)— Cloudflare 网络;存储桶位于西欧。
  • Cloudflare, Inc.(更新 Worker)— 在 App 打开时告诉它是否有新版本的代码(见“能看到你 IP 的第三方”)— Cloudflare 网络。
  • RevenueCat, Inc. — 订阅状态 — 美国。
  • Apple Inc. — 收款、通过 Apple 登录、Pattio 最新消息的送达(APNs,§3.13)、地图、歌曲搜索和 Apple Music 歌曲信息,以及天气(WeatherKit,§3.10)— 美国 / 全球。
  • Google LLC — 通过 Google 登录,仅当你选择这种方式时;以及网页的访问分析,仅当你同意时(§3.6 和 §3.11)。在这个版本中 Gemini 不参与:没有任何通往云端的 AI 路径(§3.9)— 美国 / 全球。
  • PostHog, Inc. — App 的产品分析,假名化,并且仅在你未关闭时运行(§3.7)— EU Cloud,德国法兰克福,欧盟境内(eu.i.posthog.com)。
  • Netlify, Inc.(美国旧金山)— 托管本网站和访客门户,以及本网站的支持表单(§3.11)。
  • Resend, Inc. — 通过邮件把“想法与问题”信箱中留言的副本发给团队,如有截图则一并附上(§3.12)— eu-west-1(爱尔兰),位于欧盟境内。

能看到你 IP 的第三方(以及原因)

有五种情况,你的设备会直接与我们以外的其他方通信。我们不会向他们发送你的任何东西;是你自己去访问他们。

  • 链接预览。当你粘贴一个地址时(或从另一个 App 把网页共享进来时),Pattio 会直接从你的设备去获取它的标题和图片。那个网站会看到你的 IP,就像你用浏览器访问了它一样。(我们是有意这样做的:如果通过我们的服务器中转,就意味着我们会看到你保存的所有链接。)对于一些知名平台——YouTube、Reddit、Spotify、Instagram、Facebook、TikTok、Pinterest——会向它们自己的嵌入服务请求信息卡,而不是读取页面,封面图片会保存在你的设备上,因为它们的地址几天后就会过期。
  • 歌曲搜索。你输入的内容会发送到 Apple 的 iTunes 搜索。
  • 粘贴的 Apple Music 歌曲。当你粘贴一个 Apple Music 链接时,你的手机会向 Apple 的服务请求歌曲信息,只附带歌曲的目录标识符,别无其他:没有账户,也没有会话。Apple 只能看到 IP。
  • 地图和地址。地图以及把坐标转换为地址的工作由 Apple 完成。
  • App 更新。App 打开时会询问 updates.pattio.app(一个 Cloudflare Worker)其 JavaScript 代码是否有新版本。它发送的是 App 版本、平台和渠道,不含任何你的数据;Cloudflare 能看到 IP。

5. 我们保存多久

  • 你同步的内容,在账户存在期间一直保存。
  • 你删除的内容会进入回收站(“最近删除”),在那里保存 30 天,之后自动删除。
  • 如果订阅到期或你取消订阅,当天不会删除任何东西:你会回到免费方案,所有内容都仍然可以读取和下载,唯一受限的是在超出配额期间无法再上传更多内容。有 30 天宽限期,期间会提醒你并写明日期;宽限期过后,只移除超出部分(从最旧到最新),被移除的内容会在回收站里再保留 30 天,在此期间续订仍可恢复。到第 60 天就无法挽回了。完整的时间表及具体数字见《条款与条件》(/zh-hans/terms) 第 9 节。
  • 删除墓碑。当你删除一个元素时,我们会保留它的那一行,标记为“已删除”且不含内容,好让你的其他设备知道它们那边也要删除。这是同步机制,不是你的内容,会随账户一起消失。
  • 清空回收站会删除服务器上的文件,而不仅是这台设备上的。当你把某个元素从回收站“彻底”删除时,只属于它的照片和文件会立即在这台设备上释放,它们在云端的副本也会在这台设备完成同步后立即从存储中删除。这是由你的设备而不是我们决定的,原因同样在于加密:我们无法知道你还在使用哪些文件。同时属于你保留的另一个元素的文件不会被删除。
  • 删除账户会真正删除一切:数据行、文件、密钥指纹以及你的用户。你可以在 App 中自行完成,设备上的内容会留在设备上。
  • 备份。数据库服务商会定期进行备份;已删除的数据可能会在备份中保留,直到备份过期(最长 30 天)。备份过期后,它就不在任何地方了。
  • 你通过本网站支持表单发送给我们的留言,在处理咨询所需的期间内保存,最长保存至咨询结束后十二个月(§3.11)。
  • App 中“想法与问题”信箱的留言,最多保存 12 个月;如果事情提前了结,则保存时间更短。如果你希望我们提前删除,请写信至 hola@somiadigital.com(§3.12)。
  • Pattio 最新消息的通知令牌,保存至你关闭“Pattio 最新消息”或 Apple 告知其失效为止。已关闭的行(随机标识符、语言和版本,已不含令牌)在该安装存在期间保留(§3.13)。

6. 可携带性:永远都在的按钮

在“设置”▸“数据”▸“下载全部数据”中,有一个按钮可以为你导出一个包含所有内容的 ZIP:所有看板的 JSON 文件,以及逐字节保留的所有原始文件。

这满足了你的数据可携带权(GDPR 第 20 条)以及 TRLGDCU(西班牙《消费者和用户保护总法》修订合并文本)第 119 条之三规定的义务,而且完全由你的设备完成:ZIP 不经过我们的任何服务器。

  • 它是免费的,免费方案也可以用,订阅过期后也可以用。
  • 它是自助的:不需要写信给我们,不需要等待,也不需要申请许可。
  • 它是机器可读的:JSON 和原始文件,不需要 Pattio 也能使用。

7. 你的权利

你有权访问、更正、删除你的数据,限制对其的处理,反对处理,以及要求数据可携带。如果某项处理基于你的同意,你可以随时撤回同意(撤回不会使此前已进行的处理变得违法)。

如需行使这些权利,请写信至 hola@somiadigital.com。我们最迟在一个月内答复。我们可能会请你确认身份,仅此而已。

其中很多权利你可以自己立即行使,无需写信给任何人:导出 ZIP(访问权和可携带权)、删除元素(删除权)、停止共享看板(反对权)、删除账户(完全删除)、App 的“隐私”开关(反对产品分析,§3.7)、“设置”▸“提醒”中的“Pattio 最新消息”开关(反对以通知形式接收最新消息,§3.13),以及 Cookie 管理按钮(撤回或重新给予网页分析的同意,§3.6 和 §3.11)。

一个坦诚的限制:由于私人内容是加密的,而我们没有密钥,我们无法向你提供服务器上内容的可读副本,也无法从外部更正其中任何内容。能做到这些的是你的设备,因为密钥在它手里——这也是为什么导出由它来完成。

如果你认为我们做得不对,可以向西班牙数据保护局(www.aepd.es,C/ Jorge Juan 6, 28001 Madrid)投诉。如果你住在其他国家,也可以向你所在国家的监管机构投诉。我们希望你先告诉我们,但这不是必需的。

8. 安全

没有任何系统是万无一失的。如果发生了会让你面临风险的安全事件,我们会在 GDPR 第 33 条规定的期限内告知你和西班牙数据保护局(AEPD)。

  • 私人内容的端到端加密(NaCl secretbox,XSalsa20-Poly1305),密钥保存在设备的钥匙串中,从不存放在服务器上。如果 iCloud 钥匙串已开启,密钥会通过 Apple 的传输在你的设备之间传递,由 Apple 进行端到端加密(§3.2)。
  • 所有传输均使用 TLS。
  • 数据库启用行级安全(Row Level Security):每一行都在数据库内部检查谁可以读取它,而不只是依赖客户端守规矩。需要跨越访客链接边界的查询会经过服务器函数,这些函数只返回必要的列——例如投票者的名字,绝不会返回其链接令牌。
  • 文件的访问凭据不在 App 内:签发访问权限的是一个服务器函数,它会先检查你是否有权访问该看板,由此生成的地址几分钟后就会过期。
  • 访客链接可以随时撤销。
  • Pattio 最新消息的通知令牌存放在一张封闭的表中,任何公共角色都不能读取或写入:只有服务器内部发送最新消息的函数会读取它。而且数据库不允许在它旁边保存任何身份信息(§3.13)。
  • App 内没有任何广告 SDK 或错误报告 SDK:不存在的东西就不会泄露。App 发送给第三方的唯一使用数据是 §3.7 中的产品分析,它经过一个封闭列表过滤器,不允许文本、标识符或数字离开设备。其他从设备发往第三方的请求见“能看到你 IP 的第三方”,我们在那里说明了每一项携带了什么。

9. 未成年人

Pattio 不面向 14 岁以下的未成年人,我们也不会有意收集他们的数据。这是西班牙法律允许你自行同意处理个人数据的年龄(LOPDGDD 第 7 条),也与《条款与条件》(§3)要求的年龄相同:两份文件特意写的是同一个数字。

如果我们发现在未获得监护人同意的情况下处理了 14 岁以下未成年人的数据,我们会将其删除。如果你是孩子的母亲、父亲或监护人,并认为发生了这种情况,请写信至 hola@somiadigital.com。

10. 本政策的变更

如果我们修改了任何重要内容,会更新顶部的日期;如果变更是实质性的,会在生效前通过 App 告知你。旧版本可通过邮件索取。

本政策是告知,而不是需要你接受的东西:GDPR 不允许“一揽子接受隐私政策”。具体的选择在各自的位置单独作出,并可随时更改:网页分析的同意(§3.6 和 §3.11)、对 App 产品分析的反对(即“隐私”开关,§3.7),以及对以通知形式接收 Pattio 最新消息的反对(即“Pattio 最新消息”开关,§3.13)。需要接受的是《条款与条件》(/zh-hans/terms),App 会保存所接受的版本和日期(§3.1)。