你有没有注意到,在 Bluesky 里截图分享帖子时,截出来的图片右上角会多一个 Bluesky 的 Logo,而正常使用 App 时那个位置显示的是「Follow」按钮?
这不是你的错觉。Tim Marinin 翻了一遍 Bluesky 的开源代码,找到了这个功能的具体实现。


GrowthHack.tsx
文件名就叫 GrowthHack.tsx。对,你没看错,增长黑客(Growth Hack),直接写在文件名里,没有掩饰。
文件由开发者 mozzius 在 2026 年 1 月提交。它依赖了一个叫做 expo-privacy-sensitive 的 npm 包——也是 mozzius 写的。
这个包的原理非常巧妙:它创建一个 UITextField,将 isSecureTextEntry 设为 true,然后把 Follow 按钮渲染到这个 text field 的 .layer 上。iOS 在截图时会自动清空安全文本输入框的内容,于是 Follow 按钮消失了,露出了藏在底下的 Bluesky Logo。

在非 iOS 平台上,这个组件什么都不做,正常渲染。
这个技巧不是 Bluesky 首创的。Telegram 和 Signal 都实现过类似的截图阻断技术——用 isSecureTextEntry 来隐藏消息内容,防止被截图泄露。所以 Marinin 判断 Apple 短期内不太可能修补这个「漏洞」。
声明式水印,还是劫持用户截图?
社区反应分成了两派。
一方认为这事没有想象中那么恶劣:「如果不是这样,就是永远显示一个 Logo,我宁愿这样。截图里的 Follow 按钮本身就是无用的噪音,而一个小的不显眼的 Logo 反而能让人知道帖子来自 Bluesky 而不是 X 或者 Mastodon,」有用户说。「给分享出去的内容加一个可追溯的来源,我觉得是低影响的实现方式。」
另一方的立场更硬:「当我截图的时候,我预期得到的是我屏幕上显示的像素的精确副本。这不是你的 App 的图片,这是我的屏幕的图片。」
更尖锐的批评指向了 iOS 本身:「让 App 能够修改截图内容,这本身就是操作系统设计上的错误。App 不应该知道我在截图,更不应该能改变截图内容。」
有用户指出,这个功能实际阻止了滚动长截图(iOS 原生功能),因为安全文本区域会打断长截图拼接。
这不是截图通知,这是渲染层替换
讨论中有一个常见的误解需要澄清:Bluesky 并不知道你在截图。
这不是 iOS 的「截图通知」机制(那个会让 Spotify 在截图后弹出全屏分享窗口)。Bluesky 用的是 iOS 的安全文本渲染机制——操作系统在渲染截图时,自动把标记为「安全」的文本区域清空。App 甚至不知道截图发生了,它只是把 Follow 按钮放在了一个安全文本区域里,然后在这个区域下面放了一个 Logo。
「这个功能是坏的,因为它对用户和机主不利,」一位用户说,「但这个用例——就像分享屏幕时隐藏密码——本身是好的。这是'坏功能的好用法'。」
X 和 Threads 也这么干
评论区有人指出,X(Twitter)和 Threads 也用了类似的机制。Reddit 也做过,但在设置里提供了关闭开关。
关键是历史先例:「这跟当年 iPhone 刚发布时,每封邮件末尾自动加一句'Sent from my iPhone'完全是一个道理。」只不过这次不是邮件签名,而是操作系统级别的渲染控制。
另一个视角来自 Snapchat 的类比:Snapchat 的核心卖点之一就是截图困难。但用户选择 Snapchat 时是知道这个规则的,而 Bluesky 用户没有主动选择这个行为。
真正的争论不是 Bluesky
仔细看社区评论,真正的火药味并不指向 Bluesky。
有人在争论 Apple 给了开发者太多不该给的权力。有人在吐槽 Google Maps 截图后弹出分享页面、Amazon Pharmacy 把处方信息涂黑、Spotify 截图后强制弹出全屏分享。
「我从来没有遇到过任何一个 App 对截图过程的干预,不是对用户充满敌意和令人厌烦的,」一个用户总结道。
Bluesky 的 Logo 替换可能是其中最温和的——毕竟它只是替换了一个按钮,没有弹窗,没有阻断,甚至还能通过快速切换 App 来绕过。但它碰到了一个更根本的问题:当操作系统把控制权交给 App 时,App 一定会用这个权力来服务自己,而不是用户。
Marinin 自己的态度倒是很轻松:「我觉得这挺可爱的。」
参考来源: