Highlight
iOS 14 把 Apple 的四个隐私支柱落到有限照片访问、Approximate Location、加密 DNS、本地网络权限、App Store 数据披露、AppTrackingTransparency 和 SKAdNetwork 上,让开发者用更少数据完成核心功能,并把跨 App 与网站跟踪交给用户控制。
核心内容
隐私问题往往不是一个权限弹窗能解决的。演讲里的照片分享 App 很典型:用户只是想发一张照片给朋友,却要把整个照片库、精确位置和全部通讯录都交给 App。这个流程有三个提示,也有三个过大的数据入口。功能完成了,信任却被消耗掉了。
Apple 在这场 session 里先给出判断标准:on-device processing、data minimization、security protections、transparency and control。四个支柱不是口号。它们分别落在 Core ML 本地训练、Limited Photos Library、Approximate Location、加密 DNS、App Store 隐私信息、剪贴板提示、摄像头和麦克风指示器、本地网络权限、private Wi-Fi address、AppTrackingTransparency 和 SKAdNetwork 这些具体能力上。
这套变化的共同点,是把“拿到数据再处理”的默认路径改成“先问清楚功能到底需要什么”。选照片可以用 PHPicker,不必请求完整照片库。找附近朋友可以默认拿大致位置,不必拿精确坐标。输入联系人可以靠 QuickType 建议,不必读取完整通讯录。广告归因可以用 SKAdNetwork 聚合结果,不必把用户 IDFA 发给广告网络。
对开发者来说,这场 session 更像一次产品审计清单。每个收集点都要回答三个问题:是否能在设备上完成,是否能少拿一点,是否有安全边界,用户是否能理解并控制。回答不清楚的地方,iOS 14 会用系统提示、状态栏指示、App Store 展示或权限返回值把它暴露出来。
详细内容
本场没有官方 Code snippets。下面只使用 transcript 中明确出现的 API、配置项、框架和工作流,不补写代码块。
四个隐私支柱:先改变数据流向
(00:29)Apple 用四个支柱组织隐私设计:on-device processing、data minimization、security protections、transparency and control。每个支柱都对应一个工程问题:数据在哪里处理,收集多少,谁能看到,用户是否知道并能控制。
(01:47)On-device processing 的核心是把数据留在设备上。演讲提到 Core ML 可以在设备上构建和训练模型;private federated learning 会发送差分隐私的模型更新,而不是发送用户数据。iOS 14 还把多种语言的 dictation 放到设备本地处理,HomeKit face recognition 也使用 home hub 和用户在 Photos、Home 里标记的信息。
关键点:
- 先判断功能是否必须把数据发到服务器。
- 机器学习场景优先看 Core ML、本地训练和 private federated learning。
- Dictation、HomeKit face recognition 这些系统功能说明,本地处理不只适合小功能,也适合敏感的语音和家庭场景。
- 如果数据留在设备上,系统已有的安全保护会自然成为隐私保护的一部分。
Data minimization:照片、位置和通讯录都可以少拿
(05:24)演讲用一个照片分享 App 说明 iOS 13 的问题。发一张照片需要完整照片库权限;找附近朋友需要精确位置;手动选朋友需要完整通讯录权限。用户要答应三次,App 才能完成一个很小的任务。
(06:48)iOS 14 的 Limited Photos Library 让用户只授权一部分照片。更进一步,PHPicker 可以替代 UIImagePickerController,让用户在系统选择器里挑照片,App 不需要照片库访问权限。Picker 在独立进程中运行,App 不能直接访问 picker 内容,也不能截图,只能拿到用户选中的项目。
(08:38)Approximate Location 让用户只分享大致位置。App 可以通过 NSLocationDefaultAccuracyReduced 在 Info.plist 中默认请求 reduced accuracy。确实需要精确位置的功能,例如 turn-by-turn navigation,可以请求 temporary precise location。
(10:09)通讯录也有更小的数据路径。QuickType 可以根据设备上的联系人数据库,在用户输入姓名时建议电话号码或邮箱。App 可以给文本字段加注解,提示键盘应该建议哪类联系信息,不必为了填一个字段读取整本通讯录。
关键点:
- PHPicker 适合头像、聊天发图、导入少量照片这类单次选择流程。
- Limited Photos Library 适合仍然需要 PhotoKit 的 App,但权限范围由用户选择控制。
- Approximate Location 适合附近朋友、本地内容、地区级服务这类不需要精确坐标的功能。
- QuickType contact suggestions 能替代很多“读取通讯录后填表”的旧流程。
Security protections:把网络名称和附近设备纳入边界
(12:03)Security pillar 在这场演讲中先落到 DNS。普通 DNS 查询没有保密性和真实性,网络运营者或第三方可以读取、修改和保留查询记录。Apple 平台从这一年开始原生支持两种标准加密 DNS 协议,保护 server name 的保密性和真实性,并支持 automatic DoH server discovery。
(13:52)DNS 之外,TLS 建立连接时的 Server Name Indication 仍会明文暴露服务器名称。Apple 当时正在和 IETF 推进更多 TLS handshake 加密方法。这个部分的重点很明确:网络加密不只保护内容,也要减少第三方通过服务器名称推断用户行为的机会。
(20:45)本地网络也变成了用户控制的对象。iOS 14 中,当 App 通过 Bonjour 或 mDNS scan 访问本地网络时,系统会提示用户授权。App 应在 Info.plist 中声明需要的 Bonjour services,并提供用途说明。演讲强调,提示出现前要有 UI 线索,避免用户在没有上下文时看到权限请求。
(22:10)Private Wi-Fi address 解决的是 MAC 地址跨网络跟踪。iOS 14 会为网络自动管理 Wi-Fi MAC 地址,用户加入网络时使用与身份无关的 per-network address,并且每天生成新的 private address。用户也可以在 Wi-Fi 设置中控制这个功能。
关键点:
- 加密 DNS 保护的是名称解析阶段,不能只看 HTTPS 内容是否加密。
- 本地网络设备组合会透露用户环境,因此 Bonjour、mDNS 等发现行为需要用户控制。
NSLocalNetworkUsageDescription和 Bonjour service 声明应与真实功能一一对应。- Private Wi-Fi address 由系统自动处理,但它会改变依赖稳定 MAC 地址的旧假设。
Transparency and control:把数据访问变成用户能看见的事实
(15:26)App Store 从 2020 年秋季开始要求开发者填写数据使用问卷。这些信息会显示在产品页上,让用户下载前看到 App 收集哪些数据、是否把数据用于跟踪。第三方 SDK 的数据收集也要声明,因为 SDK 运行在 App 进程内,拥有 App 的同一组权限。
(17:17)Safari 把 Intelligent Tracking Prevention 的结果展示出来。用户可以在工具栏看到 Safari 阻止了哪些 known trackers,也可以查看过去 30 天的 tracking report。
(17:49)iOS 14 会在 App 访问其他 App 的 pasteboard items 时显示提示。这个提示覆盖程序化访问,也覆盖用户手动粘贴。演讲提醒,开发者可能不知道自己集成的代码在读剪贴板,所以要审计 App 和 SDK 的行为。
(18:37)摄像头和麦克风也有新的透明度。App 开启 camera 或 mic 时,状态栏会显示指示器;Control Center 会显示当前或最近使用 camera、mic 的 App。网站使用 camera 和 mic 权限时也适用。预热剪贴板、麦克风或摄像头这类优化,如果没有 UI 线索,用户会以为 App 在无故访问敏感数据。
关键点:
- App Store 问卷要求开发者理解自己和第三方 SDK 的数据收集。
- Safari tracking report 把浏览器保护从后台机制变成可见结果。
- Pasteboard、camera、mic 访问会直接反映到系统 UI,不能依赖用户看不到来掩盖预加载。
- SDK 的行为会被用户归因到宿主 App,审计范围不能只看自家代码。
Tracking transparency 与 SKAdNetwork:广告归因不必绑定用户
(26:59)Apple 把 Safari 的 tracking prevention 思路带到 App。App Store policy 会要求 App 在跨其他公司拥有的 App 和网站跟踪用户前先请求许可。跟踪包括 targeted advertising、advertising measurement,以及和 data brokers 共享。即使数据不绑定真实姓名,只要绑定 user ID、IDFA、device ID、fingerprinted ID 或 profile,也算 tracking。
(28:54)请求跟踪权限的入口是 AppTrackingTransparency framework,并且需要在 Info.plist 中填写 NSUserTrackingUsageDescription。如果用户选择 Ask App Not to Track,IDFA API 会返回全零。没有使用 iOS 14 SDK 构建的 App 也拿不到 IDFA,API 同样返回全零。用户还可以在系统层面关闭所有 App 的 tracking permissions 请求。
(31:16)Apple 同时推进 SKAdNetwork,用隐私友好的方式回答广告归因问题。传统归因会把广告点击和安装后的启动用同一个用户标识拼起来,广告网络因此知道用户安装了哪些 App、点击了哪个广告、转化是否成功。
(33:41)SKAdNetwork 的路径不同。广告 SDK 把 campaign ID 交给设备上的 StoreKit;App 安装和启动后,StoreKit 通知 App Store client。Apple 检查同一转化是否有足够多用户发生,满足条件后设备才把 conversion data 发给 ad network。结果只说明某个 campaign 从某个 source app 带来了一批安装,不包含用户级标识,并通过 cryptographic signatures 保护完整性。
关键点:
- 使用 IDFA 前要先走 AppTrackingTransparency,并在每次启动、准备使用 IDFA 前检查权限。
- 用户关闭 tracking 后,App 要停止对应跟踪路径,不能缓存或存储 IDFA。
- SKAdNetwork 适合回答 campaign、source app 和安装转化这类聚合问题。
- 如果 App 展示广告或购买广告,应优先选择支持 SKAdNetwork 的广告网络,减少跟踪权限请求。
核心启发
-
照片分享改成免权限入口:做一个只用 PHPicker 选照片、用 QuickType 填联系人、用 approximate location 找附近人的分享流程。为什么值得做:session 的照片分享例子正是从三次大权限请求改成最小数据路径。怎么开始:把完整照片库、通讯录、精确位置请求分别替换为 PHPicker、文本字段内容类型注解和 reduced accuracy 默认路径。
-
隐私访问审计面板:在设置页列出 App 使用照片、位置、通讯录、剪贴板、camera、mic、IDFA、本地网络的功能入口。为什么值得做:App Store 数据问卷和系统提示都会让这些访问变得可见,用户需要能回到 App 内理解原因。怎么开始:先按功能列出数据源,再给每项写出用途、触发时机、替代路径和对应系统权限。
-
大致位置优先的附近服务:让附近活动、同城内容、区域推荐默认使用 approximate location,只有导航、精确签到或地理围栏任务请求 precise location。为什么值得做:演讲明确说许多功能天然适合 approximate location,并提供
NSLocationDefaultAccuracyReduced作为默认请求方式。怎么开始:把位置功能分成城市级、区域级、精确级三类,再为精确级功能添加 temporary precise location 的触发点。 -
上下文触发的本地设备发现:智能家居、投屏、打印、附近玩家搜索都放在明确按钮之后,再启动 Bonjour 或 mDNS 扫描。为什么值得做:iOS 14 会在 App 访问本地网络时提示用户,缺少上下文会削弱信任。怎么开始:在 Info.plist 中声明真实 Bonjour services 和用途说明,把发现逻辑从 App launch 移到用户动作回调。
-
广告归因迁移到 SKAdNetwork:把广告转化报表从用户级 IDFA 链路改成 campaign 与 source app 级别的聚合归因。为什么值得做:AppTrackingTransparency 会让 IDFA 取决于用户许可,SKAdNetwork 可以在不跟踪用户的前提下返回转化数据。怎么开始:确认广告网络是否支持 SKAdNetwork,梳理当前是否向 data brokers 或跨公司服务发送用户标识,再移除不必要的跟踪路径。
关联 Session
- Handle the Limited Photos Library in your app — 深入讲解用户只授权部分照片后,PhotoKit App 如何处理 limited 状态和管理入口。
- What’s new in location — 继续看 approximate location、temporary precise location 和 Core Location 授权状态变化。
- Design for location privacy — 从 Apple Maps 的界面设计看 approximate location 如何保持用户控制和透明度。
- Support local network privacy in your app — 展开本场提到的本地网络权限、Bonjour services 和权限提示时机。
- Enable encrypted DNS — 展开本场提到的加密 DNS 协议、系统级配置和 App 级连接配置。
评论
GitHub Issues · utterances