Observar la eliminación de CKRecord a través de CKSubscription no funciona

CKSubscription documento CKSubscription dice: Cuando una modificación de logging provoca que una suscripción se dispare, el server envía notifications push a todos los dispositivos con esa suscripción, excepto la que realizó el cambio original al logging.

Supongamos que tengo dos dispositivos: el device 1 y el device 2 iniciaron session desde diferentes counts de iCloud. Supongamos que ambos dispositivos están suscritos para la eliminación de loggings para un cierto tipo de logging.

  1. Si el device 1 crea un logging y luego el device 1 elimina, el device 2 recibirá una notificación, ES DE ACUERDO CON EL DOC, PERO …
  2. Si el device 1 crea un logging y luego el device 2 elimina, el device 2 recibirá una notificación – NO CREO QUE ES ACUERDO CON EL DOC, Y NO HACE NINGÚN SENTIDO, el device 2 eliminó para que el device 1 sea ​​notificado

CONFIGURAR LA SUSCRIPCIÓN EN EL DISPOSITIVO 1 Y EL DISPOSITIVO 2

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil)) application.registerForRemoteNotifications() let defaultContainer = CKContainer.defaultContainer() let publicDatabase = defaultContainer.publicCloudDatabase publicDatabase.fetchAllSubscriptionsWithCompletionHandler({subscriptions, error in if error == nil { if subscriptions.count == 0 { let subscription = CKSubscription(recordType: "OU", pnetworkingicate: NSPnetworkingicate(value: true), options: .FiresOnRecordDeletion) subscription.notificationInfo = CKNotificationInfo() subscription.notificationInfo.shouldBadge = false subscription.notificationInfo.alertBody = "OU removed or upated" publicDatabase.saveSubscription(subscription, completionHandler: {subscription, error in if error == nil { } else { println("\(error.localizedDescription)") } }) } } else { println("\(error.localizedDescription)") } }) return true } 

CREAR REGISTRO en el DISPOSITIVO 1

 @IBAction func addOU(sender: AnyObject) { var defaultContainer = CKContainer.defaultContainer() var publicDatabase = defaultContainer.publicCloudDatabase let r = CKRecord(recordType: "OU", recordID: CKRecordID(recordName: "aaaa")) publicDatabase.saveRecord(r, completionHandler: { r2, error in if error == nil { } else { println("\(error.localizedDescription)") } }) } 

BORRAR REGISTRO EN EL DISPOSITIVO 2

 @IBAction func removeOU(sender: AnyObject) { var defaultContainer = CKContainer.defaultContainer() var publicDatabase = defaultContainer.publicCloudDatabase publicDatabase.deleteRecordWithID(CKRecordID(recordName: "aaaa"), completionHandler: {recordID, error in if error == nil { } else { println("\(error.localizedDescription)") } }) } 

Sigo pensando que NO CKSubscription SENTIDO cómo funciona CKSubscription , pero como arreglo temporal recomiendo cambiar el CKRecord de lastModifiedUserRecordID al usuario que desea eliminar el logging, y solo después eliminar el logging.

Para cambiar lastModifiedUserRecordID , debe searchlo y, sin hacer nada, savelo de nuevo y, a continuación, puede eliminarse:

 @IBAction func removeOU(sender: AnyObject) { var defaultContainer = CKContainer.defaultContainer() var publicDatabase = defaultContainer.publicCloudDatabase publicDatabase.fetchRecordWithID(CKRecordID(recordName: "aaaa"), completionHandler: {record, error in if error == nil { publicDatabase.saveRecord(record, completionHandler: {record2, error in if error == nil { publicDatabase.deleteRecordWithID(CKRecordID(recordName: "aaaa"), completionHandler: {recordID, error in if error == nil { } else { println("\(error.localizedDescription)") } }) } else { println("\(error.localizedDescription)") } }) } else { println("\(error.localizedDescription)") } }) }