CloudKit Push-Benachrichtigungen bei Datensatzaktualisierung funktionieren nicht mehr

BEARBEITE: Heute 27.08.2015 erneut getestet und es funktioniert wieder, Apple hat es behoben.

Ich habe eine Anwendung im Entwicklungsmodus. Die Anwendung verwendet CKSubscription, um über Änderungen auf dem Server informiert zu werden, die für alle drei Optionen konfiguriert sind: Erstellen, Aktualisieren, Löschen. Alles hat gut funktioniert, aber kürzlich habe ich bei Regressionstests festgestellt, dass die Anwendung keine Benachrichtigungen über Datensatzaktualisierungen erhält. Die Benachrichtigungen zum Erstellen und Löschen funktionieren immer noch. Die Susbcription-Typen sind für alle drei Optionen korrekt eingestellt, da ich im Dashboard überprüft habe und die Anwendung für CKSubscription registriert ist, wie es vor ein paar Tagen war, als es wie Charme funktionierte. Ich erhalte keine Fehler von CloudKit. Das Zurücksetzen der Entwicklungsumgebung hat nicht geholfen. Ich habe mit der Version, mit der es sicher funktioniert hat, erneut getestet und die gleichen Ergebnisse erzielt.

Jede Idee, was dieses Problem verursachen könnte, was sollte ich sonst noch prüfen / versuchen?

Zusätzliche Information Ich denke, auf der Serverseite könnte etwas schief gehen. Ich habe nichts an dem Code geändert, in dem ich CloudKit-Ereignisse abonniere und Push-Benachrichtigungen bearbeite - auch die Version, in der es funktioniert hat, wird nicht mehr über Updates benachrichtigt. Die Anwendung, an der ich arbeite, wird veröffentlicht, daher ist das Wechseln des Containers nicht möglich. Wir sind uns nicht sicher, ob dies das Problem verursachen könnte. Wir möchten nur erwähnen, dass die App denselben Container zum Speichern der Kerndaten in der Cloud verwendet. Ziel des App-Upgrades ist es, Daten in das CloudKit zu migrieren und als Cloud zu verwenden Lagerung ausschließlich. Es ist verwirrend, dass alles wochenlang einwandfrei funktionierte und plötzlich ohne eindeutigen Grund aufhörte zu arbeiten, wahrscheinlich als die Belastung durch intensive Tests und das Hinzufügen von Datensatztypen ...

Test mit von Grund auf neu entwickelter App: Ich habe eine einfache Test-App geschrieben, um den Erhalt von Benachrichtigungen zu überprüfen. Ich kann nur die Benachrichtigung über die Erstellung eines Datensatzes erhalten. Was ist los mit meinem Code:

import UIKit
import CloudKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?

let container = CKContainer.defaultContainer()

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    let settings = UIUserNotificationSettings(forTypes: .Alert, categories: nil)
    application.registerUserNotificationSettings(settings)
    application.registerForRemoteNotifications()

    return true
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    println("didFailToRegisterForRemoteNotificationsWithError: \(error)")
}

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
    println("didRegisterForRemoteNotificationsWithDeviceToken: \(deviceToken)")
    subscribe()
}

func subscribe() {
//        let predicate = NSPredicate(format: "text != %@", argumentArray: [""])
//        let predicate = NSPredicate(format: "TRUEPREDICATE", argumentArray: nil)
    let predicate = NSPredicate(value: true)
    let subscription = CKSubscription(recordType: "Note", predicate: predicate, options: .FiresOnRecordDeletion | .FiresOnRecordUpdate | .FiresOnRecordCreation)
    let notificationInfo = CKNotificationInfo()
    notificationInfo.alertBody = ""
    subscription.notificationInfo = notificationInfo
    let publicDatabase = container.publicCloudDatabase
    println("subscribing with CloudKit...")
    publicDatabase.saveSubscription(subscription, completionHandler: { (returnedSubscription, error) -> Void in
        if let error = error {
            println("subscription error \(error.localizedDescription)")
        } else {
            println("subscription ok")
        }
    })
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    let ckNotification = CKQueryNotification(fromRemoteNotificationDictionary: userInfo)
    println("didReceiveRemoteNotification: \(ckNotification)")
}

func applicationWillResignActive(application: UIApplication) {}

func applicationDidEnterBackground(application: UIApplication) {}

func applicationWillEnterForeground(application: UIApplication) {}

func applicationDidBecomeActive(application: UIApplication) {}

func applicationWillTerminate(application: UIApplication) {}

}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage