Observar a exclusão do CKRecord via CKSubscription não funciona
CKSubscription
doc diz:Quando uma modificação de registro faz com que uma assinatura seja acionada, o servidor envia notificações por push a todos os dispositivos com essa assinaturaexceto aquele que fez a alteração original para o registro.
Vamos supor que eu tenho dois dispositivos:device 1
edevice 2
conectado a partir de diferentes contas do iCloud. Vamos supor que os dois dispositivos registrados para exclusão de um determinado tipo de registro.
device 1
cria um registro e depoisdevice 1
apaga entãodevice 2
seja notificado - O QUE ESTÁ DE ACORDO COM O DOC, MAS ..E sedevice 1
cria um registro e depoisdevice 2
apaga entãodevice 2
seja notificado - NÃO ACHO DE ACORDO COM O DOC, E NÃO FAZ QUALQUER SENTIDO,device 2
excluí-lo paradevice 1
deve ser notificadoCONFIGURAR ASSINATURA NO DISPOSITIVO 1 E 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
}
CRIAR GRAVAÇÃO NO 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)")
}
})
}
EXCLUIR GRAVAÇÃO NO 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)")
}
})
}