Developer Tools 入门 18m
认识 CloudKit Console
Meet CloudKit Console
2021年6月10日
一句话判断
CloudKit Console 是旧版 CloudKit Dashboard 的 Web 重建版本 —— 终于可以在浏览器里直接写查询、查看日志、监控性能了,但还缺少批量数据导入和实时数据流查看这些高级功能。
这场 Session 讲了什么
Session 展示了全新的 CloudKit Console,一个基于 Web 的 CloudKit 管理工具。替代了老旧的 CloudKit Dashboard。
核心功能:
- Schema 浏览和编辑:直接在浏览器中查看和修改 Record Type、Field、Index。
- 查询执行器:写 CloudKit 查询(基于 GUI 的筛选器),直接查看结果记录。
- 日志查看器:实时查看 API 请求日志,包括每个请求的延迟、错误信息和客户端信息。
- 性能面板:按时间维度查看 API 请求量、延迟分布、错误率等指标。
- 权限管理:给团队成员分配不同的 CloudKit 环境访问权限(开发/生产)。
还演示了如何在 CloudKit Console 中使用声明式 Schema 管理、如何调试同步问题、以及如何监控生产环境的健康状态。
值得深挖的点
查询执行器的实用价值。以前要查看 CloudKit 中的数据,要么写代码跑查询,要么用 CloudKit Dashboard 的简陋界面。新的查询执行器支持类似 SQL 的过滤条件:字段名 + 操作符 + 值,可以快速定位问题数据。比如查询”所有 createdAt 在上周之后、status 为 failed 的记录”。查询结果可以直接在浏览器中编辑和删除,这对调试开发环境非常有用。
性能面板的告警机制。CloudKit Console 的性能面板可以设置阈值告警:当 API 延迟超过某个阈值、错误率超过某个百分比时,自动发送邮件通知。这对于生产环境的监控至关重要 —— 用户不会告诉你 CloudKit 查询变慢了,但性能面板会。
代码片段
CloudKit Console 中的查询示例(伪代码,在 Web UI 中操作):
// CloudKit Console Query Builder(在浏览器 GUI 中配置)
Record Type: Task
Filter: status == "failed" AND creationDate > 2021-06-01
Sort: creationDate DESC
Limit: 50
对应的 Swift 查询代码(参考):
import CloudKit
func queryFailedTasks() {
let predicate = NSPredicate(
format: "status == %@ AND creationDate > %@",
"failed",
Calendar.current.date(byAdding: .day, value: -7, to: Date())! as NSDate
)
let query = CKQuery(recordType: "Task", predicate: predicate)
query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
let operation = CKQueryOperation(query: query)
operation.resultsLimit = 50
operation.recordFetchedBlock = { record in
print("失败任务: \(record.recordID), 原因: \(record["errorMessage"] ?? "")")
}
CKContainer.default().privateCloudDatabase.add(operation)
}
Schema 声明式配置(JSON,配合 cktool 使用):
{
"recordTypes": {
"Task": {
"fields": {
"title": { "type": "STRING" },
"status": { "type": "STRING" },
"dueDate": { "type": "DATE/TIME" },
"priority": { "type": "INT64" }
},
"indexes": {
"statusIndex": {
"field": "status",
"type": "VALUE"
},
"dueDateIndex": {
"field": "dueDate",
"type": "VALUE"
}
}
}
}
}
最佳实践
- 用 CloudKit Console 的日志查看器排查同步失败。当用户报告数据没有同步时,在日志中搜索用户的 CloudKit User ID,可以看到该用户的所有 API 请求和错误信息。
- 生产环境上线前在 Console 中检查 Schema 索引。常见性能问题的根源是缺少查询索引。CloudKit Console 会标记没有索引的高频查询字段。
- 给团队的不同角色分配不同的 Console 权限。开发者只需要开发环境权限,运维人员需要生产环境只读权限,避免误操作。
还有什么值得关注
- CloudKit Console 支持”Telemetry”视图,可以按 API 类型(query/modify/subscribe)分别查看请求量趋势。
- 日志支持导出为 CSV 格式,方便在分析工具中进一步处理。
cktool命令行工具可以和 CloudKit Console 配合使用,Console 负责可视化,cktool 负责自动化。
WWDC 2021