WWDC Quick Look 💓 By SwiftGGTeam
What’s new in CloudKit Console

What’s new in CloudKit Console

观看原视频

Highlight

CloudKit Console 新增隐藏容器、Act As iCloud 和共享 zone 管理,让团队能整理容器列表、以 iCloud 账号视角查询私有数据,并在网页上配置 zone-wide sharing。

核心内容

CloudKit 应用通常会有多个 container。开发阶段会建测试 container、原型 container、临时实验 container。时间一长,Xcode 和 CloudKit Console 的列表会变得很乱,团队成员也会看到同样的噪音。

00:51)这场 Session 先解决这个问题。CloudKit Console 新增了隐藏容器。开发者可以在 Console 里选择哪些 container 可见,哪些 container 隐藏。隐藏状态作用在 team 级别,并会同步到 Xcode 等开发者工具。

另一个常见问题更难调试:用户说自己的私有数据库数据不对,但开发者用自己的 developer account 查询,看不到同一个视角。

02:08)Act As iCloud 解决的是这个调试入口。开发者可以在 Console 里登录一个 iCloud account,让后续 record 查询和 zone 查看都站在该 iCloud 账号的视角执行。它只作用于数据相关区域,不允许执行 schema 操作。

最后是共享数据。CloudKit sharing 允许 App 在用户之间安全共享 record。过去要理解 shared zone 的状态,开发者需要在 App 逻辑和 CloudKit 数据之间来回核对。

04:23)新版 Console 提供了创建和查看 zone share 的工具。开发者可以在 Zones 页面选择一个 zone,配置 public 或 private share,并拿到一个短 ID 交给参与者加入。之后,这个 zone 里的新 record 会自动共享。

详细内容

隐藏不再使用的 container

01:00)隐藏容器从 container selector 进入。打开 Console 后,在顶层导航打开 container selector,点击 Manage Containers。这个菜单会列出当前 team 的所有 container,并允许切换可见性。

概念流程(不是 API):
1. 打开 CloudKit Console
2. 从顶部导航打开 container selector
3. 点击 Manage Containers
4. 找到不再需要的测试或原型 container
5. 关闭它的可见性
6. 刷新 Xcode 的 container list

关键点:

  • 第 1 到第 3 步进入新的 Manage Containers 菜单,这是 Session 演示的入口。
  • 第 4 步适合处理测试 container、原型 container、旧项目 container。
  • 第 5 步隐藏 container。Session 说明隐藏状态作用在 team 级别。
  • 第 6 步验证结果。隐藏后的 container 不只从 Console 列表消失,也会从 Xcode 的列表消失。

这个功能不改变 schema,也不删除数据。它只改变开发者工具里的可见性。适合用来清理已经不再活跃、但暂时不能删除的 container。

用 Act As iCloud 调试用户视角的数据

02:16)Act As iCloud 允许 Console 以一个 iCloud account 的身份查看数据。Session 给出的场景是:某些用户在 private database 中遇到数据问题,开发者需要理解他们看到的 record 和 zone。

概念流程(不是 API):
1. 在 CloudKit Console 中执行一次普通查询
2. 打开 Act As iCloud account 菜单
3. 在弹窗中登录一个 iCloud account
4. 观察页面顶部的 Act As banner
5. 重新查询 records 或查看 zones
6. 通过 banner 按钮停止 Act As session

关键点:

  • 第 1 步建立对照。普通查询使用 developer account 的上下文。
  • 第 2 到第 3 步切换到 iCloud account。切换后,Console 的上下文会变化。
  • 第 4 步是安全提示。Session 说页面顶部会出现 banner,提醒后续操作使用 iCloud account。
  • 第 5 步只覆盖数据区域:查询 records、查看 zones。
  • 第 6 步退出该上下文。切换 container 或 environment 也会停止 Act As session。

03:45)这个能力有明确边界。Act As iCloud 作用于 records,不作用于 schema。访问 schema 会停止 Act As session。它也不能读取加密字段。Session 明确说,encrypted fields 对开发者仍然不可读,只有原始用户可以解密。

在 Console 里配置 shared zone

04:47)Zone sharing 的规则作用在一个 zone 中的每条 record 上。一个 shared zone 会有 CloudKit share record,用来保存访问该 zone 中 record 的选项。Session 也提醒:shared zone 不能已经包含 existing shared records。

概念流程(不是 API):
1. 打开 Zones 页面
2. 选择要共享的 zone
3. 在 details view 点击 Configure zone wide sharing...
4. 选择 public share 或 private share
5. 为 public share 选择 read-only 或 read/write
6. 或者为 private share 在 participant 级别配置权限
7. 创建 share 后,把短 ID 发给参与者
8. 参与者从 Records 页面的 Accept Shared Record 菜单加入

关键点:

  • 第 1 到第 3 步是 Console 的共享入口。
  • 第 4 步决定共享类型。Public shared zone 适合任何拿到短 share code 的人加入。
  • 第 5 步只针对 public zone,Session 展示了 read-only 和 read/write 两种权限。
  • 第 6 步针对 private share。Private shared zone 要求成员在 participant list 中才能加入。
  • 第 7 步使用 Console 生成的短唯一 ID。
  • 第 8 步是加入方式。Session 说明 Accept Shared Record 菜单在 Records 页面。

06:31)配置完成后,该 zone 中新建的 record 会自动共享。这个能力适合在开发和生产环境中检查共享配置,尤其是需要验证参与者权限、共享类型和加入流程时。

核心启发

1. 做一个 CloudKit container 清理清单

  • 做什么:把团队的测试 container、原型 container、历史演示 container 分组检查,隐藏不再活跃的项目。
  • 为什么值得做:隐藏状态会作用到整个 team,并同步到 Xcode,能减少团队成员看到的无关 container。
  • 怎么开始:从 CloudKit Console 的 container selector 进入 Manage Containers,先处理已经不再用于开发的 container。

2. 给用户数据问题建立复现账号

  • 做什么:为常见数据问题准备测试 iCloud account,用 Act As iCloud 查询它的 private database。
  • 为什么值得做:Console 查询会切换到该 iCloud account 的视角,适合排查“某个账号看不到某些 record”的问题。
  • 怎么开始:在 Act As iCloud account 菜单登录测试账号,重新执行 record 查询,并记录切换前后的结果差异。

3. 为共享功能做权限矩阵验证

  • 做什么:把 public read-only、public read/write、private participant 权限分别建成测试用例。
  • 为什么值得做:Session 说明 public 和 private shared zone 的加入规则不同,权限配置也不同。
  • 怎么开始:在 Zones 页面创建 shared zone,用短 ID 让不同测试账号从 Accept Shared Record 菜单加入。

4. 检查敏感字段的调试预期

  • 做什么:列出 App 中的 encrypted fields,明确哪些字段即使用 Act As iCloud 也不能由开发者读取。
  • 为什么值得做:Session 明确说加密字段仍然只有原始用户可以解密,这是隐私和安全边界。
  • 怎么开始:用 Act As iCloud 查看包含 encrypted fields 的 record,确认团队的调试文档不会要求读取这些字段明文。

关联 Session

评论

GitHub Issues · utterances