Observe que la eliminación de CKRecord a través de CKSubscription no funciona
CKSubscription
doc dice:Cuando una modificación de registro hace que se active una suscripción, el servidor envía notificaciones push a todos los dispositivos con esa suscripciónexcepto el que hizo el cambio original para el registro.
Supongamos que tengo dos dispositivos:device 1
ydevice 2
conectado desde diferentes cuentas de iCloud. Supongamos que ambos dispositivos están suscritos para la eliminación de registros para un determinado tipo de registro.
device 1
crea un registro y luegodevice 1
entonces lo borradevice 2
ser notificado - ESTO ES SEGÚN EL DOC, PERO ...Sidevice 1
crea un registro y luegodevice 2
entonces lo borradevice 2
recibir notificaciones: NO creo que esté DE ACUERDO CON EL DOC, y NO TIENE NINGÚN SENTIDO,device 2
lo borró asídevice 1
debe ser notificadoCONFIGURAR SUSCRIPCIÓN EN EL DISPOSITIVO 1 Y 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", predicate: NSPredicate(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 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 DEL 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)")
}
})
}