From 0eafb8dc34e6ea5856bccd879b42fd53c7fb62db Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 21 Nov 2018 16:36:41 -0800 Subject: [PATCH] Use long-lived operations for CK backup. --- Signal/src/util/Backup/OWSBackupAPI.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Signal/src/util/Backup/OWSBackupAPI.swift b/Signal/src/util/Backup/OWSBackupAPI.swift index e7a7db1a8..ed0041762 100644 --- a/Signal/src/util/Backup/OWSBackupAPI.swift +++ b/Signal/src/util/Backup/OWSBackupAPI.swift @@ -133,8 +133,8 @@ import CloudKit success: @escaping (String) -> Void, failure: @escaping (Error) -> Void) { - database().save(record) { - (_, error) in + let saveOperation = CKModifyRecordsOperation(recordsToSave: [record ], recordIDsToDelete: nil) + saveOperation.modifyRecordsCompletionBlock = { (records, recordIds, error) in let outcome = outcomeForCloudKitError(error: error, remainingRetries: remainingRetries, @@ -164,6 +164,14 @@ import CloudKit failure(invalidServiceResponseError()) } } + + // These APIs are only available in iOS 9.3 and later. + if #available(iOS 9.3, *) { + saveOperation.isLongLived = true + saveOperation.qualityOfService = .background + } + + database().add(saveOperation) } // Compare: