Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cloudkit: CKDatabaseOperation not working on cellular

Hi to all the CloudKit users:

I had a horrible time trying to find out why CKDatabaseOperation wouldn't give any feedback. No errors, no callbacks when saving CKRecords on cellular.

Could you please let me know what is your opinion regarding this?

like image 878
ferdyyy Avatar asked Sep 03 '25 02:09

ferdyyy


1 Answers

Someone in the Developer Forums of Apple found a solution: https://forums.developer.apple.com/thread/20047

the magic happens when setting qualityOfService = .UserInitiated

Example:

let publicDB = CKContainer.defaultContainer().publicCloudDatabase    
let operation = CKModifyRecordsOperation(recordsToSave: [aRecord], recordIDsToDelete: nil)

operation.allowsCellularAccess = true
operation.qualityOfService = .UserInitiated // <----- THATS THE CELLULAR FIX

operation.perRecordProgressBlock = {(record, progress) in
    print("Progress: \(Int(progress*100.0))%")
}
operation.perRecordCompletionBlock = {(record, error) in
    print("Upload complete") //Add awesome error handling here
}
publicDB.addOperation(operation)
like image 111
ferdyyy Avatar answered Sep 04 '25 22:09

ferdyyy