大多数浏览器和
Developer App 均支持流媒体播放。
-
隐私保护的新功能
Apple 相信隐私是一项基本人权。了解 Apple 平台上的新技术,它们将帮助你更轻松地执行基本隐私模式,让用户建立起对你 App 的信任。你还将了解 Apple 平台隐私服务的升级,以及隐私功能如何对 visionOS 上的软件架构和输入模型设计产生影响的案例分析。
章节
- 1:01 - Privacy pillars
- 3:03 - Photos picker
- 5:44 - Screen capture picker
- 7:46 - Calendar access
- 10:29 - Oblivious HTTP (OHTTP)
- 14:22 - Communication Safety
- 17:46 - App sandbox
- 21:57 - Advanced Data Protection
- 23:41 - Safari Private Browsing
- 26:40 - Safari app extensions
- 27:22 - Spatial input model
资源
相关视频
WWDC23
- 准备、设置、中继:使用网络中继保护 App 流量
- 将你的窗口 App 提升至空间计算领域
- 将照片选择器嵌入你的 App 中
- 探索 Calendar 和 EventKit
- App Store Connect 的新动向
- Safari 扩展的新动向
- ScreenCaptureKit 中的新增功能
WWDC22
WWDC21
WWDC20
-
下载
♪ 悦耳的器乐嘻哈 ♪ ♪ 大家好! 我是 Privacy Engineering 团队的 Michael 欢迎来到“隐私保护的新功能”讲座 Apple 坚信 隐私是一项基本人权 尊重和保护人权是我们共同的责任 出于这个原因 隐私是 Apple 在 设计新功能和改进已有功能时的 核心考量因素 许多产品和服务已成为所有人生活中 不可或缺的一部分 因此开发者也是 保护用户的重要一环 在你的 App 中提供 出色的隐私体验 让用户可以理解并掌控 哪些数据可以被读取 并了解其用途 能让用户对你的 App 产生信任 尤其是在涉及到 生活中较为敏感的部分之时 隐私核心协议为你将隐私 内置入 App 提供重要指引 你从前可能听到过我们谈起这些 因为它们是 Apple 所秉持的 关于产品和服务隐私的 四大核心观念 第一项核心协议为数据最小化: 只使用构建功能所需的数据 这适用于 App 的 整个体系架构 从功能获取的数据量 到与 App 服务器共享的数据 再到可能与第三方分享的数据 第二项是设备端处理:充分发挥设备 本地处理数据的能力 避免通过任何服务器 进行分享 第三项是透明度和控制 要求确保 用户理解何时、何处、 哪些数据被获取和处理 及其原因 让用户在数据被使用前 拥有足够的控制权 同时也要让用户可以随时改变想法 最后一项核心协议是安全保护: 运用强大的技术缓解措施 来强化其他几项核心协议 例如端到端加密 为了帮助你在 App 中 应用这些隐私核心协议 我将向你介绍可采用的 以隐私为中心设计的新工具 你也可以了解重要平台有关隐私的 最新变更情况 最后 我会谈谈 Apple 最新平台上的 空间输入模型 是如何为保护隐私而设计的 首先 我将介绍 Apple 平台上 全新的隐私强化技术 它们能让你更轻松地 创建拥有出色隐私体验的 优质 App 这包括了一系列使你的 App 可以流畅获取内容的新 API 同时也让用户 可以进行分享方面的精细控制 另一些新 API 则能更好地保护 与服务器和用户之间的通讯 我将首先介绍照片选择器的升级 它是为了更顺畅地 获取照片而设计的 随着时间推移 我们图库中的照片数量大增 越来越多珍贵的回忆得以留存 不仅有令人尴尬的童年照片 也有上一次徒步旅行的照片 因此 让你的 App 获得信任的 重要方法是让用户能够 自己做出关于和 App 分享 哪些数据 以及何时分享方面的精细决定 因此 如果用户想使用你的 App 分享上次旅行中的最美风景照 他们并不需要授权 App 访问所有照片的权限 即可分享 这就是照片选择器 可以帮你实现的功能 这一 API 让你的 App 可以访问选中的照片或视频 而不需要请求访问整个图库的权限 在 iOS 17 及 macOS Sonoma 上 你可以将选择器 完全嵌入 App 中 获得无比流畅的体验 尽管照片看似 你 App 的一部分 它们实际上是由系统进行渲染 仅在被选中时进行分享 因此 照片始终处于 用户自己的掌控之下 使用全新的自定义选项 你可以自行选择展示 无特殊效果的选择器 就像这样 也可以展示最小化的单行照片 并通过水平方向进行滚动 还可以展示内置版的完整选择器 附带全新的选项菜单 为分享照片元数据 提供控制功能 例如说明文字 或位置信息 照片选择器是 一种快速访问照片的好方法 你无需担心必须获取 访问整个图库的权限 也无需设计和实现照片选择工作流 请酌情使用单独访问照片的选择器 而不再请求完整权限 关于选择器新功能的深度解析 请查看“将照片选择器 嵌入你的 App”视频 假如你所开发的 App 对于访问完整照片图库 有强烈的需求 iOS 17 也提供了 重新设计的授权对话框 将展示照片数量 和分享内容的示例 这可以帮助用户做出 适合自己的内容分享决定 因为偏好设置可能随时发生变化 系统也会定期提醒用户 App 是否有 访问完整图库的权限 接下来是屏幕捕捉选择器 这是用于 macOS 的 ScreenCaptureKit 中的新 API 它让用户可以仅分享 你的 App 进行屏幕共享时 所需的窗口或屏幕 并提供更出色的体验 在 macOS Sonoma 推出之前 如果用户想要在 远程视频会议中 对演示进行屏幕共享 就需要在设置 App 中 向会议 App 授权录制整个屏幕 该体验较为负面 并存在过度分享的风险 有了新的 SCContentSharingPicker API macOS Sonoma 将替你展示窗口选择器 让用户可以选择 想要共享的屏幕内容 一旦选中 macOS 将确保只共享 所选的窗口或屏幕 因为存在录制屏幕的明确操作 你的 App 有权限 在屏幕捕捉会话的时段内 对所选内容进行录制 这意味着你的 App 不需要 单独请求授权来捕捉屏幕 或创建自己的屏幕内容选择器 这些都由 SCContentSharingPicker 进行处理 为了确保用户始终知晓 macOS Sonoma 也纳入了 新的屏幕共享菜单栏项目 来提醒用户 App 正在录制屏幕 请你记住这一点 并仅在用户知晓的前提下 进行屏幕内容录制 点按之后 菜单将展开并提供 共享内容的预览 这让用户可以快速向屏幕捕捉会话 添加或移除内容 还可以彻底结束会话 SCContentSharingPicker 也提供了 自定义选项 让你可以根据 App 的需求进行调整 例如偏好选择模式或 App 如想了解更多细节 请查看“ScreenCaptureKit 新功能”讲座 日历是另一个在你的 App 中 可以实现流畅体验的区块 对于只创建新事件的 App 而言尤其如此 日历记录着用户生活的 各类细节 例如就诊预约 或航班信息 因此用户 在你的 App 要求访问权限时 可能会感到意外 甚至直接拒绝 对于只要求访问写入日历事件的 App 而言 这可能会导致 无法添加事件或产生负面体验 有些用户甚至会因此 错过音乐会或好朋友的生日派对 为了避免该问题 Apple 平台对于日历的访问 进行了两处重要更改 首先 如果你的 App 只创建新的日历事件 那么告诉你一个好消息: 使用 EventKitUI 你的 App 便无需请求任何访问权限 之所以有这种可能 是因为 EventKitUI 视图控制器 在你的 App 外进行渲染 无需对 API 或功能 进行任何更改 第二 如果你希望 提供自己的 UI 来创建事件 还有全新的仅添加日历权限 让你的 App 可以在 不访问其他事件的 前提下添加日历事件 这是另一种将你 App 的事件 加入用户每日计划中的好方法 用户也不必担心 你的 App 是否会获取 其他日历内容 如果你的 App 此后需要完整的日历访问权限 你也可以要求权限升级 最好是在与 用户意图相联系时提出这一请求 如果出其不意进行询问 或因意外原因进行询问 请求可能会遭到拒绝 这也将对你 App 的 体验产生负面影响 你可以通过定义 一个有意义的目的字符串 来帮助用户理解为何需要访问权限 为了让所有 App 都能享受 仅写入访问权限的益处 有两件事请务必牢记 如果你的 App 之前已经获得日历访问权限 升级到 iOS 17 或 macOS Sonoma 时将默认为 仅写入权限 同样 如果你与旧版的 EventKit 进行链接 并且你的 App 要求 日历访问权限 系统将提示其为仅写入权限 在这种情况下 如果你的 App 试图获取日历事件 系统将自动询问 是否为 App 升级 完整访问权限 如想了解更多关于 如何将 EventKit 和 EventKitUI 整合到 App 中的信息 请查看“探索日历 和 EventKit”讲座 接下来是全新的 Oblivious HTTP API 它将帮助你 向服务器隐藏用户的 IP 地址 并避免网络运营商获取相对敏感的 App 使用习惯信息 了解用户每天何时使用哪些 App 就可以提供 有关用户生活的深刻洞察 因为蜂窝网络和 Wi-Fi 网络运营商 可以监控用户连接到哪些服务器 所以它们也可以掌握用户个人的 App 使用情况和生活规律 有些网络运营商或许会利用这一点 来了解用户如何使用你的 App 这可能涉及非常敏感的信息 例如约会 App 或者关注特定健康问题的 App IP 地址是互联网通讯的 基本要素 然而 IP 地址可能遭到滥用 来获取某人的位置或身份信息 如果你想在 App 中实施 具有匿名保证的功能 如客户信息分析 那么 IP 地址泄露 可能会给你带来更大的挑战 Apple 平台 现已支持 Oblivious HTTP 简称 OHTTP 旨在帮助你 通过将身份和行为分开 来保护用户的 App 使用信息和 IP 地址 OHTTP 是一种标准化的 互联网协议 其目的在于轻量化运行 在应用层代理加密信息 以实现快速的事务服务器交互 有了 OHTTP 网络运营商仅可以监控到 与中继提供者进行的连接 而不是你的应用服务器 这一架构的基础是中继节点 它知道用户的 IP 地址 以及目的地服务器的名称 但并不知道加密的内容 中继节点应当始终可以看到 与你应用服务器 进行的连接 因此 中继节点能获取的唯一有意义的信息 便是用户 IP 与你应用服务器最后的连接 是由中继节点进行的 如果中继服务由第三方运营 源 IP、目的地 IP 和内容 对任何一方都不完全可见 这也让你可以向不必获知 用户身份或追踪用户的功能 添加技术保证 例如匿名分析 有了 OHTTP 的支持 你就有机会构建 更强大的互联网隐私保护 这将对用户产生积极影响 iCloud 专用代理 这样的服务 已经使用 OHTTP 提供出色的性能和强大的隐私保护 举例来说 专用代理 用它来保护所有 DNS 查询 如想进一步了解有关 如何使用 OHTTP 的更多信息 请查看网络中继的相关视频 采用 OHTTP 同样意味着 你必须考虑 如何在系统架构中 替换 IP 地址 比如说在执行真实用户检测时 你可以参考 WWDC22 的讲座 “以 Private Access Token 取代 CAPTCHA” 来了解如何采用保护隐私的方法 来替换 IP 信誉系统 加密 DNS 查询是 保护 App 使用不受网络监控的 另一个关键要素 如想了解如何实现 请查看 WWDC20 的 “启用加密的 DNS”讲座 最后一个新工具是 Communication Safety 以及全新的 Sensitive Content Analysis 框架 该框架采用设备端处理 来保护使用你 App 的儿童 Apple 平台 和你构建的 App 已成为许多家庭至关重要的一部分 儿童也会使用我们的产品和服务 来探索数码世界并与家人和朋友 进行交流 Communication Safety 帮助每个家庭保护儿童的安全 在儿童收到或者试图分享 可能带有裸露内容的照片时 进行警告 并提供资源进行协助 在 Apple 各个平台上应用 这些保护措施非常重要 在你的 App 中也是如此 为了实现该目的 Communication Safety 在信息以外 也将识别其他区域涉及的敏感内容 例如通过隔空投送进行的分享 FaceTime 通话中的留言 电话 App 中 分享的联系人信息 以及照片选择器中的内容 我们向所有用户提供这些功能 不局限于年龄 并附加敏感内容警告 现在 有了全新的 Sensitive Content Analysis 框架 你也可以在自己的 App 中识别敏感内容了 它使用的是相同的设备端技术 以及系统提供的 ML 模型 因此你无需与任何服务器共享内容 有了该框架 你就可以实现这些 而不再需要去应对 培训大型 ML 模型 并将其塞进 App 的复杂过程 只需几行代码 你就能将它和 App 进行整合 首先 创建 SCSensitivityAnalyzer 实例 你可以查看 analysisPolicy 特性 来决定是否需要进行分析 以及在图片或视频包含裸露内容时 需要展示什么样的干预措施 接下来 对照片的 URL 或你想分析的 CGImage 调用 analyzeImage 方法 如果要分析视频 请调用 videoAnalysis 方法 它将返回一个处理器 你可以追踪进度 并在需要时取消分析 如需获取分析结果 请在处理器上调用 hasSensitiveContent 如果 isSensitive 为真 该图片或视频 很有可能包含裸露内容 在这种情况下 你的 App 需要自行提供干预措施 可以是模糊处理 或者以其他方式 对画面和视频进行修饰 也需要提供查看内容的选项 同样地 请查看分析规则 来自定义干预措施 这取决于 Communication Safety 或 敏感内容警告 是否启用 你可以在 Apple Developer 文档中 找到干预措施设计的详细指引 采用以上这些 API 你就可以为 App 提供 出色的隐私服务 除此之外 还有一些 Apple 平台已有功能的 隐私方面的变化 其中包括 保护你 App 数据的新方法 以及针对 Safari 浏览器 及 Safari App 扩展的 隐私升级 首先 我们为 macOS 设计的全新隐私保护功能 旨在帮助你保护 App 中的数据 免受同一设备上 其他 App 的影响 磁盘上的位置 如桌面、文稿和 下载文件夹的权限都由系统管理 这确保了用户可以掌控 App 何时能访问私人数据 该模型适用于与用户 直接互动的文件 例如项目演示 或者带预算的电子表格 有些 App 可能会在不同位置 保存私人数据 例如即时通讯 App 会保存已发送和收取信息的数据库 还有笔记 App 会保存度假方案 这些文件通常被存储在 类似于资料库的文件夹中 对于使用 App 沙盒的 App 来说 文件会存储在 App 的数据容器中 macOS Sonoma 为用户提供了额外的功能 用于控制访问数据的人员 具体来说 macOS 确保在 App 从来自其他开发者的 App 数据容器中 访问数据前进行授权 这将从两方面 对你的 App 产生影响 首先 如果你的 App 将在 系统管理的数据仓储之外存储数据 请采用 App 沙盒来将 新的数据保护措施向全体用户推广 这样一来 你 App 创建的 所有文件都将得到保护 已经使用 App 沙盒的 App 将自动获取新的保护措施 第二 如果你的 App 访问其他 App 的数据 有几种方法可以用于要求授权 在无需你做出任何改变的前提下 macOS Sonoma 会在你的 App 访问另一个 App 数据容器中的文件时要求授权 该授权在你的 App 保持开启时全程生效 退出 App 后 该授权重置 你应该只在 其他 App 知情的前提下 尝试读取其文件 如果提示的时机出乎意料 或是没有阐明目的 你 App 的访问可能会被拒绝 有意义的目的字符串将帮助用户 理解你的 App 为何请求访问权限 你也可以使用其他的一些方法来获取 访问其他 App 文件的 明确权限 如想流畅地访问单个文件和文件夹 请使用 NSOpenPanel 这将在你的进程之外 展示 macOS 文件选择器 你的 App 可以在 用户确认选择后 读写所选资源 NSOpenPanel 也让你 可以指定 选择器中默认展示的路径 让选择变得更加轻松 对于已经获得完整磁盘访问权限的 备份工具和磁盘管理工具 访问时不会出现额外的提示 因为用户已经授予这些 App 访问所有文件的权限 除此之外 所有 由你的团队 ID 签名的 App 默认可以访问 你其他 App 容器中的数据 无需授权提示 所以 如果你发布的新 App 从旧版 App 中导入数据 整个过程将会顺畅地完成 但是 在一些情况下 你可能会想设置更具限制性的规则 举例来说 如果你构建了代码解译器 比如编辑器、浏览器或是外壳 你可能会希望 macOS 在此 App 访问你开发的 另一个即时通讯 App 的数据时 请求授权 要实现这些 你可以在 App 的 Info.plist 中 指定用 NSDataAccessSecurityPolicy 替换带有明确 AllowList 的默认同队规则 指定之后 列出的流程 和安装包将得到 访问你 App 数据的授权 免去了其他 App 申请授权时的 额外同意步骤 高级数据保护是你为 用户数据提供保护的另一良机 高级数据保护 新增于 2022 年 帮助用户 为存储在 iCloud 中的 绝大部分数据启用端到端加密 使用 CloudKit 你可以在启用高级数据保护时 对 App 存储在 CloudKit 中的数据 进行端到端加密 这一切都不需要你进行任何更改 比如管理加密键值、 加密操作 或是复杂而高风险的恢复工作流 要让你的用户享受到 高级数据保护带来的巨大隐私权益 你只需遵循以下几个步骤 首先 请确保在你的 CloudKit 架构中的 所有字段使用加密数据类型 这包括 默认的 CKAsset 字段 同时 CloudKit 的大多数 数据类型 都含有一种加密变量 比如 EncryptedString 接下来 你可以使用 encryptedValues API 从 CloudKit 记录中 检索或存取数据 为了方便起见 所有的加密和解密操作 都由 API 进行抽象处理 结果就是 每当用户启用 高级数据保护功能时 你 App 的数据都完全能享受到 它对安全漏洞和 隐私进行的保护 关于如何在 App 中 使用 CloudKit 的解说 包括代码示例 请查看 WWDC21 的 “CloudKit 新功能”讲座 接下来是 Safari 浏览器 无痕浏览模式中 新的指纹识别和跟踪保护功能 Safari 浏览器的设计 以隐私为核心 无痕浏览模式在 Safari 浏览器中启用了额外的 隐私保护措施 比如说 确保在标签页关闭时 Safari 浏览器 不会记住你访问的页面、 搜索历史记录 或自动填充信息 Safari 17 浏览器中的 无痕浏览模式 新增了高级跟踪和指纹识别保护 包括两项防止跨网站跟踪的 全新保护措施 首先 Safari 浏览器防止 已知的跟踪 和指纹识别资源进行加载 如果你是网站开发者 请确保在无痕浏览模式中 测试你网站的功能: 将测试的重点放在登录工作流、 从网站进行的跨站点导航 以及与屏幕、音频和图形相关的 浏览器 API 的使用 你可以在没有高级跟踪 和指纹识别保护的情况下 重新加载 来确认 你网站行为的变化 是否由新的保护措施导致 请在 macOS 中 用右键点按重新加载按键 在 iOS 中 通过页面设置按键来完成 或者在 Safari 浏览器的 普通浏览模式中测试 你也可以打开 Web 检查器 来检查任何向 JavaScript 控制台的输出 由于联系已知跟踪者而遭到阻止的 网络请求将展示为一条 以“向已知跟踪者的 连接被阻止”开头的消息 另一种常见的跨网站跟踪方法 是嵌入 URL 的唯一识别符 比如在查询参数中 要让用户可以控制 自己在何处被跟踪 另一种新的保护措施是 从浏览器的导航 和复制链接时移除跟踪参数 在跟踪参数被识别到时 Safari 浏览器会将 识别组件从 URL 上拆分 同时保留无法识别的部分 请记住 广告归因 无需跨网站识别个体 即可实现 举例来说 Private Click Measurement 是另一种可以替代 广告归因跟踪参数的隐私保护措施 现在 它也可以在 无痕浏览模式中用来 应对直接反应广告 不在磁盘上写入任何数据 归因也只限于基于单一标签页的 单一浏览语境 这遵循了 Safari 浏览器 在无痕浏览模式中 严格的短暂浏览和 标签页分隔模型 如想了解更多信息 请查看 WWDC21 的 “认识隐私保护的广告归因”讲座 最后一项平台变化 是 Safari 浏览器中 新的 App 扩展的授权模型 在 Safari 17 浏览器中 Apple 倡导的 网络扩展授权模型 也将可以用于 App 扩展 这意味着用户可以基于单个网站 选择你的扩展可以访问哪些页面 我们也让用户掌控 哪些扩展可以 在无痕浏览模式中运行 如想进一步了解扩展方面的变化 以及如何基于单个网站对扩展 进行授权 你可以查看 “Safari 扩展的新功能”讲座 新的开发者工具和平台变化背后的 隐私原则 在 Apple 构建的所有功能中 均有体现 包括我们新的 空间计算平台上的输入模型 这个系统用起来非常简单: 只需要四处看看 决定你想与什么进行互动 并轻点 无需新的授权 App 开发者无需做额外的工作 也无需担心看的时候 遭到 App 跟踪 这样就诞生了一项 隐私体验出众的优秀新产品 让我们来看看眼部和手部控制中的 隐私工程方法 首先 输入模型有 需要达成的高级目标 输入体验必须快速而流畅 并启用与 UI 元素的自然互动 它应该对用户所看的事物 提供实时反馈 以便向 各种类型和尺寸的 UI 元素互动提供可信度 除此之外 已有的 iPhone 和 iPad App 应当可以立即使用 最后 它不应该 仅为 App 接收基本输入 而请求新的 App 授权 接下来是输入模型 在隐私方面的目标 要防止 App 了解眼部的敏感信息 包括医疗病状 只有相关的系统组件才能 访问眼部相机 要启用无授权访问 App 应当能在 不获知用户 眼部和手部信息的前提下运行 用户所看的事物也会透露其想法 因此很重要的一点是 App 运行时 不去了解用户看的事物 只了解与用户互动的事物 我们来看看 Apple 为实现这些目标 而设计的系统 为输入系统测量眼部 和手部的内外相机数据 均在独立的系统流程中进行处理 这将产出眼部和手部相对于 视线及手指开合 识别系统位置的测量结果 并从其他系统组件 包括你的 App 中 抽象掉复杂的相机处理流程 悬停反馈系统将 屏幕上呈现的内容和眼部位置相结合 来确定用户所看的内容 如果用户在看 UI 元素 系统会在渲染时添加高亮层 这一过程由渲染引擎 在 App 流程之外实现 并仅对 使用设备者可见 以便让用户理解所看的内容 而无需对 App 透露任何信息 一旦识别到了双指开合动作 系统将为你 App 的 高亮 UI 元素 生成普通点按事件 借助这一系统架构 将相机数据转译为 输入事件的复杂流程 由操作系统进行处理 这就意味着 在新平台上 无需任何变化即可接收输入 除了默认的系统行为 UIKit、SwiftUI 和 RealityKit 让你可以更轻松地 调整这些效果 以适配你 App 的设计 并保有和系统提供的 UI 元素 相同的隐私保护功能 你可以更改类型、形状 和任意悬停效果适用的元素 如想进一步了解使用方面的 更多信息 请查看“认识适用于 空间计算的 SwiftUI” 和“提升适用于 空间计算的窗口 App”讲座 空间输入模型 通过实施隐私协议得以实现 系统尽可能减少 每个组件需要访问的数据量 所有的处理过程都在设备上完成 用户拥有控制权 仅与 App 分享有意愿的互动 而你看向的地方 则受到独立进程的保护 由操作系统的核心程序强制执行 让隐私成为设计的核心目标 便可以兼顾优质的功能 和出色的隐私体验 我们希望 对 Apple 各平台隐私方面 新变化的了解能让你有所启发 并通过出色的隐私体验 更轻松地建立信任; 尽可能减少 App 访问的数据 并使用内容选择 API 为用户提供流畅的掌控体验; 采用 Sensitive Content Analysis 框架 和设备端处理 保护使用你 App 的儿童 为了保护你 App 中的 用户数据 请采用安全保护措施 如 macOS 上的 App 沙盒 并确保在 CloudKit 中 进行数据加密 感谢你的观看 我们无比期待你的作品 ♪
-
-
16:00 - Detect sensitive content
// Analyzing photos let analyzer = SCSensitivityAnalyzer() let policy = analyzer.analysisPolicy let result = try await analyzer.analyzeImage(at: url) let result = try await analyzer.analyzeImage(image.cgImage!) // Analyzing videos let handler = analyzer.videoAnalysis(forFileAt: url) let result = try await handler.hasSensitiveContent() if result.isSensitive { intervene(policy) }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。