CKSubscription
doc dice: Quando una modifica registrazione causa di un abbonamento al fuoco, il server invia le notifiche push a tutti i dispositivi con tale sottoscrizione ad eccezione di quello che ha effettuato la modifica originale al disco.Osservare CKRecord eliminazione tramite CKSubscription non funziona
Let assumere Ho due dispositivi: device 1
e device 2
loggato da diversi account iCloud. Supponiamo che entrambi i dispositivi siano registrati per la cancellazione dei record per un determinato tipo di record.
- Se
device 1
crea un record e quindidevice 1
cancella poidevice 2
ricevere una notifica - che è secondo il doc, MA .. - Se
device 1
crea un record e quindidevice 2
cancella poidevice 2
ricevere una notifica - I Non credo che è secondo la DOC, e non ha alcun senso,device 2
cancellati in mododevice 1
deve essere informato
SET UP ABBONAMENTO ON DISPOSITIVO 1, nel 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
}
Crea record nel 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)")
}
})
}
DELETE RECORD SUL 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)")
}
})
}
ho radared il rdar bug: // 18.810.914 –