核心速览:CloudKit 控制台默认仅显示开发者本人的数据。若要查看真机测试使用的“个人账户”或“沙盒测试账户”的数据,需点击控制台中的 “Act As iCloud Account” 按钮进行切换登录。
问题描述
很多开发者在开发 Core Data 或 SwiftData 的云同步功能时,会遇到一个典型困惑: 在真机上使用测试账户(或个人主力账号)成功写入了数据,同步状态也显示正常,但在 CloudKit Dashboard(控制台)中查询记录时,却空空如也。
原因分析
这是由于 CloudKit 的隐私隔离机制:
- 身份不一致:CloudKit 控制台默认使用你的 Apple Developer 开发者账号 登录。
- 数据隔离:私有数据库(Private Database)的数据是严格隔离的。开发者账号只能看到属于它自己的数据,无法直接查看其他 iCloud 账户(包括你自己的非开发者测试号)产生的数据。
解决方案
CloudKit 控制台提供了一个名为 “Act As iCloud Account” 的功能,允许开发者在控制台会话中“扮演”另一个 iCloud 用户。
操作步骤
-
登录 CloudKit Console。
-
进入你的 App 容器,点击页面左侧的 “Act As iCloud Account” 按钮。
-
在弹出的窗口中,输入你在真机/模拟器上测试用的 iCloud 账户和密码。
-
登录成功后,Query Records 的结果将显示该测试账户下的数据。
注意事项
- 会话时效性:该登录状态是临时的。如果你刷新页面、切换 Container、切换环境(Development/Production)或点击 “Stop Acting As…”,都会自动登出测试账户,恢复为开发者账户。
- 双重认证:如果测试账户开启了双重认证(2FA),登录时同样需要输入验证码。