隐私即架构:MeteoHealth 中真正离开设备的是什么
一次结构性审视:为什么你的数据从一开始就无处可送——没有服务器,没有账户,只有三次对外请求——以及其中尚未完成的部分。
隐私声明通常描述的是意图:一家公司承诺会用你的数据做什么,或者承诺不会做什么。这里要说的是另一种描述。它讲的是这款应用是如何构建的——并且对照过它自己的源代码——以及这种构造让什么成为可能、又让什么不可能。这不是承诺,也不是宣言。承诺可以随一次政策更新而改变;架构描述的是代码此刻在做什么,本文全篇都停留在这个层面上。
这也不是医疗建议:下文没有任何一处说明某个症状或某种模式对你的健康意味着什么,只说明关于它的数据能去哪里、不能去哪里。如果你读到这里,是因为你正在判断是否要把关于自己感受的记录托付给一款应用,那么在你往里面输入第一个字之前先弄清楚这件事,是合理的诉求——这也是一个比「这款应用好不好」更窄的问题,本文同样不试图回答后者。
关于其他应用的数据核实于 2026年7月28日。
价格与功能组成以该日期的美国 App Store 为准;在你所在地区可能有所不同。
无处可收集
对任何涉及健康信息的应用,最简单的问题是:如果有人想收集你的数据,它会去哪里?对 MeteoHealth 来说,答案是根本没有可以发送到的地址。这款应用没有属于自己的服务器——不是休眠的、不是备用的,一个都没有。没有任何在我们控制之下、会接收你所记录内容的端点。
这和「我们决定不收集数据」是不同的说法,而这个区别很重要。一家运行着服务器、只是选择不记录请求的公司,离开始记录请求只差一次政策变更。没有服务器的应用没有这样一个可以被扳动的开关,因为另一端根本没有一台等待连接的机器。这种缺席不是一项设置,而是这件事物本身的形状。
同样的逻辑也适用于账户。没有注册,没有登录,没有任何形式的账户——这意味着即使有人想这么做,也没有地方可以把姓名、电子邮箱或持久标识符附加到你的记录上。你记录的任何内容都不与某个身份绑定,因为这款应用里根本没有身份系统。
把这两点放在一起,任何健康类应用都会自然引出的一个问题——「如果公司被入侵、被出售或者关闭,我的数据会怎样」——在这里的答案异常简短。根本没有一个集中存放所有人记录的地方可以被入侵、被转让或被关闭,因为从来就不存在一个让不同人的记录汇聚到同一处的地方。存在的一切,只存在于单个设备上,以及单个用户自己的 iCloud 账户里,而不在任何属于我们的东西里。
内部究竟有什么
关于「没有服务器」这个隐私说法,它的分量取决于设备本身运行的是什么,所以这一点也值得说清楚。发布到你手机上的应用没有链接任何第三方库。这个项目里恰好只有一个外部依赖:一个在开发过程中用于快照测试的库。它只挂载在测试目标上——也就是说,它是发布前检查流程的一部分,永远不会成为落到你设备上的那个构建版本的一部分。
除了这一个测试依赖之外,没有分析包,没有向外拨号的崩溃报告 SDK,也没有广告库——iPhone 应用里没有,Watch 应用里没有,各个小组件里也没有。没有任何地方读取广告标识符,应用里也没有任何代码调用系统自身的追踪 API。这不是一项可以在菜单里关掉的设置,而是在每一个发布出去的目标里都根本不存在。
值得说清楚这种缺席实际上去掉了什么,因为「没有分析」听起来像是一个不起眼的技术细节,但实际上并非如此。分析库通常存在的目的,是回答诸如你打开了哪些界面、停留了多久、离开前点了什么这类问题——这类行为轨迹,在足够多次的使用记录累积之后,几乎能像你直接输入的内容一样说明一个人的情况。这款应用在它发布的任何一个目标里,都没有构建这种轨迹的代码路径。不记录它,和先把它匿名化或聚合起来再存储,并不是一回事——从一开始,代码库里任何地方都没有收集它的机制。
实际发出了什么
以上这些都不意味着这款应用在网络上保持沉默——事实并非如此。这款应用一共只与三个外部地址通信,每一次都只携带一组具体、有限的信息。
天气服务会收到你的坐标、一个访问密钥,以及你界面设置的语言。这个请求里不会附带其他任何内容。发出去的坐标是完整精度的,不会被四舍五入到城市或地区级别——目前这里还没有做粗化处理这一步。天气预报绑定的是一个具体地点,不说明你在哪里就没有办法获取预报。这是唯一一项必须离开设备、这项功能才能正常运作的关于你的信息。
NOAA 空间天气数据源收到的是一个不附带任何参数的普通请求——没有任何关于你的信息随之传出。返回的是一个所有人共享的单一数值——全球 Kp 指数,无论谁来查询,得到的都是同一个值。这里无论哪个方向都没有任何个人信息需要传送。
开放食品产品数据库收到的是你扫描的商品条形码,外加我们在请求头中附带的支持邮箱地址——这是对该数据库维护者的一种礼貌,让他们知道是谁在调用,而不是关于你个人的信息。你的商品查询不会与你记录的其他任何内容相关联。
三个目的地,三种不同的原因,每一种情况下都只是一组具体、有限的信息——不是什么都不传,但也不是什么都传。
记录到底存放在哪里
你所做的记录——症状、备注,任何你在追踪的内容——默认只存在于你的设备上。如果它们要同步到某处,也只会同步到你自己的个人 iCloud 账户,那个绑定在你 Apple ID 之下的私人空间,而绝不是某个共享数据库,也不会是除你以外任何人能看到的东西。在到达那里的路上,这些数据不会经过任何更大范围的存储。
与周期相关的记录处理得更加收窄:它们完全不会离开设备,连 iCloud 都不会去。唯一的例外是 Apple Health,而且只有经期流量会被写入那里,并且只有在你明确授权的情况下才会写入。关于你周期的其他任何内容都不会进入 Health,任何内容在没有你先点头之前都不会跨出去。这条路径比你其他记录所走的路径更窄:一般的症状记录可以同步到你的个人 iCloud,而周期记录则留在本地,唯一会离开的只有经期流量,而且只会去往 Health,而且只在获得许可之后。
天气和你感受之间的关联——也就是这款应用真正计算的东西——是在设备本身上算出来的。这个数值不会被发送到任何地方去生成;它是从已经在本地的数据中就地生成的。而在 App Store 自己的隐私卡片上,这款应用被归入的类别,是可选类别中最严格的一个:Data Not Collected。
由此能得出什么,又不能得出什么
值得精确地说明这样一种架构证明了什么、又没有证明什么,因为这两者很容易被混为一谈。数据无处可送,并不会把一款症状记录应用变成医疗器械——它说明的是信息去了哪里,而不是这款应用是为了什么、应该怎么使用。应用向你展示的天气模式与你感受之间的关联,仍然只是一种关联:一种从你自己记录的条目中得出的关联,不是诊断,也不是可以脱离你自己的判断就据以行动的依据。
同样值得抵制一种诱人的捷径式想法:以上所有内容都不会让这种关联本身变得更可信。一款没有服务器、没有分析功能的应用,依然可能向你展示一种薄弱、巧合、或者建立在太少记录之上因而没什么意义的模式——不收集数据这件事,对应用从你实际输入的数据中得出的结论的质量,没有任何说明作用。换句话说,隐私是「你的信息去了哪里」这件事的属性,不是「应用的结论有多好」这件事的属性。这是两个各自独立的问题,其中一个回答得好,并不能回答另一个。
把这两个问题放在一起看,正是要摆出这样一份架构说明的意义所在。知道你的记录只留在你的设备和你自己的 iCloud 里,能就「暴露程度」这件事告诉你一些真实且有用的信息——还有谁可能看到这些内容、在什么情况下——而这里的答案接近于「几乎没有人」,接近于「几乎没有任何情况」。但它没有告诉你,应用呈现出的某个特定关联,是否反映了你身体和天气之间某种真实的东西,还是仅仅是由一小段记录构成的巧合。两个问题都很重要。把它们分开看待,而不是用一个回答去顶替另一个,才是让任何一个答案真正有价值的关键。
请求去往何处,又带走了什么
DESTINATION · WHAT GOES WITH THE REQUEST
- WEATHER APICOORDINATES · API KEY · UI LANGUAGE
要拿到天气,坐标就必须离开设备。目前它们按原样发送——四舍五入到约一公里的改动已经计划,但尚未发布。
- NOAA SPACE WEATHERNO PARAMETERS · NOTHING ABOUT YOU · KP INDEX RETURNED
一个不带参数的普通请求:不发送任何关于你的信息,返回一个全局指数。
- OPEN FOOD DATABASESCANNED BARCODE · SUPPORT ADDRESS IN HEADER
只有你扫描的商品条形码,以及请求头中我们的支持邮箱。
- NEVER LEAVESSYMPTOM LOG · CYCLE · CORRELATIONS · NO ACCOUNT · NO ANALYTICS
这里的一切都不会发往任何地方,因为根本没有我们的服务器可以接收。
FIG.21 · WHAT LEAVES THE DEVICE · VERIFIED_IN_SOURCE · CHECKED_2026-07-28
上面这张图把三个目的地分别与传向它们的确切内容对应了起来——而它最后一行,正是在一份对外请求清单里最容易被忽略的那一点:什么留在原地,从来哪儿都不去。
我们还没有完成的事
坐标精度。 目前,完整精度的坐标会被发送给天气服务,尽管预报其实只需要精确到大约一公里的程度。降低精度已经在计划之中。它还没有上线,所以还没有完成。
位置权限的措辞。 应用请求你的位置信息时,你看到的系统权限提示文字,目前的表述比实际需要的更宽泛。它正在被改写成更窄、更准确的说法。
关于同步的一行界面文案。 应用设置里有一句话,目前对同步机制的描述比实际情况更强。它正在被改写。除了承认这个问题已经被发现、正在修复之外,这里没有更多细节可以补充。
对 App Privacy 声明的复查。 既然坐标会发送给第三方天气服务,App Store 上的这项声明就值得再检查一遍,确认它的表述是否准确。这个问题已经被提出。目前还没有答案。
这份清单和上面所有内容并不是分开的——它是同一套架构,在依然不完整的地方被如实描述出来。一篇读起来仿佛一切都已经完成的隐私文章,价值比不上一份列出「还有什么没完成」的清单。
以上就是这份架构,截至本页顶部所写的日期为止。如果想了解如何对任何应用(包括这一款)核实类似的事情,在安装前阅读一款应用自己的 App Store 页面的检查清单涵盖了这方面的内容。至于设备端计算出的这项关联本身做了什么,天气关联功能页面对此有直接说明。而由于一份单独描述的架构本身说明不了这款应用是否适合你,三款应用 App Store 页面的并排阅读就摆在它旁边——包括那些阅读结果指向别人家应用的情况。
- MeteoHealth: Symptom Tracker — App Store (US storefront), 2026.
- About privacy information on the App Store and the choices you have to control your data — Apple Support, 2026.