•Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s...
Transcript of •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s...
![Page 1: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/1.jpg)
#WWDC17
© 2017 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
Dave Browning, CloudKit
•Build Better Apps with CloudKit Dashboard • Session 226
App Frameworks
![Page 2: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/2.jpg)
Helping You Build Better Apps
![Page 3: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/3.jpg)
Helping You Build Better Apps
All stages of app’s lifecycle
![Page 4: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/4.jpg)
Helping You Build Better Apps
All stages of app’s lifecycle
Experiment with entire API
![Page 5: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/5.jpg)
Helping You Build Better Apps
All stages of app’s lifecycle
Experiment with entire API
Visibility into all events
![Page 6: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/6.jpg)
Helping You Build Better Apps
All stages of app’s lifecycle
Experiment with entire API
Visibility into all events
Understand aggregate behavior
![Page 7: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/7.jpg)
Quick Conceptual Refresher
![Page 8: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/8.jpg)
Quick Conceptual Refresher
Record
Record
Record
![Page 9: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/9.jpg)
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
![Page 10: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/10.jpg)
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
![Page 11: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/11.jpg)
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
![Page 12: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/12.jpg)
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Shared
1 per user
![Page 13: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/13.jpg)
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Public
1
Shared
1 per user
![Page 14: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/14.jpg)
Environment: Development Schema
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Public
1
Shared
1 per user
![Page 15: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/15.jpg)
Environment: ProductionEnvironment: Development Schema
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Public
1
Shared
1 per user
![Page 16: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/16.jpg)
Environment: ProductionEnvironment: Development Schema
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Public
1
Shared
1 per user
![Page 17: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/17.jpg)
Container: iCloud.com.wwdc17.todos
Environment: ProductionEnvironment: Development Schema
Database: Private
1 per user
Quick Conceptual Refresher
Zone: Todos
Record
Record
Record
Public
1
Shared
1 per user
![Page 18: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/18.jpg)
Example Todo List App Data model
![Page 19: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/19.jpg)
Example Todo List App Data model
List
![Page 20: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/20.jpg)
Example Todo List App Data model
List
Item Item …
![Page 21: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/21.jpg)
Example Todo List App Data model
List
Item Item …
parent reference
![Page 22: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/22.jpg)
Example Todo List App Data model
List
Item Item …
parent reference
Share
root record
![Page 23: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/23.jpg)
Example Todo List App Data model
List
Item Item …
parent reference
What’s New with CloudKit WWDC16
Share
root record
![Page 24: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/24.jpg)
Example Todo List App Fetch changes APIs
![Page 25: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/25.jpg)
Example Todo List App Fetch changes APIs
CKDatabaseSubscription (private database) CKDatabaseSubscription (shared database)
![Page 26: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/26.jpg)
Example Todo List App Fetch changes APIs
CKDatabaseSubscription (private database) CKDatabaseSubscription (shared database)
Upon push and app launch: 1. CKFetchDatabaseChangesOperation 2. CKFetchRecordZoneChangesOperation
![Page 27: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/27.jpg)
Example Todo List App Fetch changes APIs
CKDatabaseSubscription (private database) CKDatabaseSubscription (shared database)
Upon push and app launch: 1. CKFetchDatabaseChangesOperation 2. CKFetchRecordZoneChangesOperation
CloudKit Best Practices WWDC16
Maintaining a Local Cache of CloudKit Records
![Page 28: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/28.jpg)
•Demo •Fetching changes in CloudKit Dashboard
![Page 29: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/29.jpg)
![Page 30: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/30.jpg)
HTTP POST /database/1/iCloud.com.wwdc17.todos/development/private/records/modify
{ "operations": [ { "operationType": "update", "record": { "recordName": “C5304752-9819-48F3-B837…”, "recordType": “List”, …
![Page 31: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/31.jpg)
HTTP POST /database/1/iCloud.com.wwdc17.todos/development/private/records/modify
{ "operations": [ { "operationType": "update", "record": { "recordName": “C5304752-9819-48F3-B837…”, "recordType": “List”, …
let operation = CKModifyRecordsOperation( recordsToSave: [record], recordIDsToDelete: [] )
operation.modifyRecordsCompletionBlock = { (savedRecords, deletedRecordIDs, error) in … }
privateDB.add(operation)
![Page 32: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/32.jpg)
![Page 33: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/33.jpg)
HTTP POST /database/1/iCloud.com.wwdc17.todos/Development/private/records/changes
{ "zoneID": { "zoneName": "Todos", "ownerRecordName": "_6c07d121939728c5c22a18487fb57b01" }, "syncToken": "AQAAAAAAAAAXf/////////+hzFL5eSRI0YcbNPNBUdxY", "resultsLimit": 200 }
![Page 34: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/34.jpg)
HTTP POST /database/1/iCloud.com.wwdc17.todos/Development/private/records/changes
{ "zoneID": { "zoneName": "Todos", "ownerRecordName": "_6c07d121939728c5c22a18487fb57b01" }, "syncToken": "AQAAAAAAAAAXf/////////+hzFL5eSRI0YcbNPNBUdxY", "resultsLimit": 200 }
let operation = CKFetchRecordZoneChangesOperation( recordZoneIDs: zoneIDs, optionsByRecordZoneID: optionsByRecordZoneID )
operation.recordChangedBlock = {…} operation.recordWithIDWasDeletedBlock = {…} operation.recordZoneChangeTokensUpdatedBlock = {…} operation.recordZoneFetchCompletionBlock = {…} operation.fetchRecordZoneChangesCompletionBlock = {…}
privateDB.add(operation)
![Page 35: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/35.jpg)
•Demo •Subscriptions & Push in CloudKit Dashboard
![Page 36: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/36.jpg)
Log Event
![Page 37: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/37.jpg)
Log Event Time
![Page 38: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/38.jpg)
iOS macOS tvOS watchOS web
Log Event Platform
![Page 39: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/39.jpg)
user record ID + name, if team member
Log Event User
![Page 40: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/40.jpg)
database push sharing
Log Event Type
![Page 41: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/41.jpg)
Log Event Operation ID
![Page 42: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/42.jpg)
Log Event Operation Group Name
![Page 43: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/43.jpg)
Log Event Details
![Page 44: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/44.jpg)
record modify database changes zone changes record fetch …
Log Event Type of operation
![Page 45: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/45.jpg)
private public shared
Log Event Database
![Page 46: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/46.jpg)
Log Event Zone
![Page 47: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/47.jpg)
does not include Internet latency
Log Event Server latency
![Page 48: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/48.jpg)
Log Event Request size
![Page 49: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/49.jpg)
Log Event Response size
![Page 50: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/50.jpg)
not a new iPhone 😉
Log Event Hardware
![Page 51: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/51.jpg)
Log Event Operation group details
![Page 52: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/52.jpg)
A CKOperation may lead to multiple requests
Log Event Request ID
![Page 53: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/53.jpg)
Log Event Errors
![Page 54: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/54.jpg)
Log Event Type of error
![Page 55: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/55.jpg)
Operation GroupsNEW
![Page 56: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/56.jpg)
Initialization Operation Group
Operation GroupsNEW
![Page 57: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/57.jpg)
Initialization Operation Group
Operation Groups
CKModifyZoneOperation
NEW
![Page 58: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/58.jpg)
Initialization Operation Group
Operation Groups
CKModifyZoneOperation
CKModifySubscriptionsOperation
NEW
![Page 59: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/59.jpg)
Initialization Operation Group
Operation Groups
CKModifyZoneOperation
CKModifySubscriptionsOperation
CKFetchDatabaseChangesOperation
NEW
![Page 60: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/60.jpg)
Initialization Operation Group
Operation Groups
CKModifyZoneOperation
CKModifySubscriptionsOperation
CKFetchDatabaseChangesOperation
CKFetchDatabaseChangesOperation
. . .
NEW
![Page 61: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/61.jpg)
Operation GroupsNEW
![Page 62: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/62.jpg)
Operation Groups
AutomatedBackup ManualBackup Restore
NEW
![Page 63: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/63.jpg)
Operation Groups
AutomatedBackup ManualBackup Restore
SettingUpLibrary ThumbnailsDownload FetchingMovieStream
NEW
![Page 64: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/64.jpg)
Operation Groups
AutomatedBackup ManualBackup Restore
SettingUpLibrary ThumbnailsDownload FetchingMovieStream
Sync down (initial) Sync down (push triggered) Download (user initiated)
NEW
![Page 65: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/65.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 66: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/66.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 67: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/67.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 68: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/68.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 69: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/69.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 70: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/70.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 71: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/71.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 72: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/72.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
public enum CKOperationGroupTransferSize : Int {
case unknown case kilobytes case megabytes case tensOfMegabytes …}
![Page 73: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/73.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 74: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/74.jpg)
open class CKOperationGroup : NSObject, NSSecureCoding {
open var operationGroupID: String { get }
@NSCopying open var defaultConfiguration: CKOperationConfiguration?
open var name: String? open var quantity: Int
open var expectedSendSize: CKOperationGroupTransferSize open var expectedReceiveSize: CKOperationGroupTransferSize
}
open class CKOperation : Operation { open var group: CKOperationGroup? }
![Page 75: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/75.jpg)
open class CKOperationConfiguration : NSObject {
open var container: CKContainer?
open var qualityOfService: QualityOfService open var allowsCellularAccess: Bool open var isLongLived: Bool
open var timeoutIntervalForRequest: TimeInterval open var timeoutIntervalForResource: TimeInterval
}
![Page 76: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/76.jpg)
open class CKOperationConfiguration : NSObject {
open var container: CKContainer?
open var qualityOfService: QualityOfService open var allowsCellularAccess: Bool open var isLongLived: Bool
open var timeoutIntervalForRequest: TimeInterval open var timeoutIntervalForResource: TimeInterval
}
![Page 77: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/77.jpg)
CKOperationConfiguration
![Page 78: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/78.jpg)
CKOperation
CKOperationConfiguration
![Page 79: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/79.jpg)
CKOperationGroup
CKOperation
CKOperationConfiguration
![Page 80: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/80.jpg)
CKOperation
CKOperation
CKOperationCKOperationGroup
CKOperation
CKOperationConfiguration
![Page 81: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/81.jpg)
Log Event Operation group
![Page 82: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/82.jpg)
Log Event Operation group → Operation
![Page 83: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/83.jpg)
Log Event Operation group → Operation → Request
![Page 84: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/84.jpg)
Privacy
![Page 85: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/85.jpg)
Privacy
Your iCloud account Everyone else’s account
![Page 86: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/86.jpg)
Privacy
Your iCloud account Everyone else’s account
private & shared data private & shared data
![Page 87: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/87.jpg)
Privacy
Your iCloud account Everyone else’s account
private & shared data private & shared data
public data public data
![Page 88: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/88.jpg)
Privacy
Your iCloud account Everyone else’s account
private & shared data private & shared data
public data public data
log events log events
![Page 89: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/89.jpg)
Privacy
Your iCloud account Everyone else’s account
private & shared data private & shared data
Log events do not include data
public data public data
log events log events
![Page 90: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/90.jpg)
Sharing
![Page 91: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/91.jpg)
Sharing
List
Item Item …
parent reference
Share
root record
![Page 92: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/92.jpg)
•Demo •Sharing in CloudKit Dashboard
![Page 93: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/93.jpg)
Telemetry Monitoring for changes
![Page 94: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/94.jpg)
Telemetry Detecting errors
New CKError documentation
![Page 95: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/95.jpg)
Telemetry Verifying pushes
![Page 96: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/96.jpg)
Summary
![Page 97: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/97.jpg)
Summary
New CloudKit Dashboard
![Page 98: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/98.jpg)
Summary
New CloudKit Dashboard
New CKOperationGroup API
![Page 99: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/99.jpg)
Summary
New CloudKit Dashboard
New CKOperationGroup API
Send us your feedback!
![Page 101: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/101.jpg)
Labs
CloudKit & iCloud Lab Technology Lab I Tue 4:10PM-6:00PM
CloudKit & iCloud Lab Technology Lab C Thur 11:00AM-1:00PM
![Page 102: •Build Better Apps with CloudKit Dashboard · Helping You Build Better Apps All stages of app’s lifecycle Experiment with entire API Visibility into all events](https://reader035.fdocuments.in/reader035/viewer/2022071101/5fdadafa67e51d1e846bc017/html5/thumbnails/102.jpg)