Observe CKRecord-Löschung über CKSubscription funktioniert nicht

CKSubscription doc sagt:Wenn eine Datensatzänderung ein Abonnement auslöst, sendet der Server Push-Benachrichtigungen an alle Geräte mit diesem Abonnementausgenommen derjenige, der die ursprüngliche Änderung vorgenommen hat zum Datensatz.

Nehmen wir an, ich habe zwei Geräte:device 1 unddevice 2 von verschiedenen iCloud-Konten angemeldet. Nehmen wir an, beide Geräte haben für einen bestimmten Datensatztyp das Löschen von Datensätzen abonniert.

Obdevice 1 erstellt einen Datensatz und danndevice 1 löscht es danndevice 2 Werde benachrichtigt - DAS ENTSPRICHT DEM DOKUMENT, ABER ..Obdevice 1 erstellt einen Datensatz und danndevice 2 löscht es danndevice 2 Lassen Sie sich benachrichtigen - Ich glaube nicht, dass es dem DOC entspricht, und es macht keinen Sinn,device 2 löschte es sodevice 1 sollte benachrichtigt werden

ABONNEMENT FÜR GERÄT 1 UND GERÄT 2 EINRICHTEN

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
}

AUFNAHME ERSTELLEN auf GERÄT 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)")
        }
    })
}

AUFNAHME AUF GERÄT 2 LÖSCHEN

@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)")
        }
    })
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage