logging更新中的CloudKit推送通知停止工作

编辑 :今天27.08.2015重新testing,它再次运作,苹果已经修复它。

我有一个应用程序在开发模式。 应用程序使用CKSubscription来获取服务器上的更改通知,为所有三个选项进行configuration:创build,更新,删除。 一切工作正常,但最近在回归testing期间,我发现应用程序没有收到logging更新通知,创build和删除通知仍然工作。 当我在仪表板上选中时,所有三个选项的设置都正确,并且应用程序注册了CKSubscription,因为它是几天前像魅力一样工作的。 我没有从CloudKit获得任何错误。 开发环境的重置没有帮助。 我已经重新testing了这个版本,我确信它正在工作,并得到了相同的结果。

任何想法可能会导致这个问题,还有什么我应该检查/尝试?

附加信息:我想在服务器端可能会出错。 在订阅CloudKit事件和处理推送通知的代码中,我没有更改任何内容,无论如何,它的工作版本也没有得到更新通知。 我正在编写的应用程序已经发布,因此更换容器是不行的。 不知道这是否会导致这个问题,只是想提一下:应用程序使用相同的容器在云中存储核心数据 – 应用程序升级的目标是将数据迁移到CloudKit并将其用作云专门存储。 令人困惑的是,一切工作都好几个星期,并没有任何明确的理由突然停止工作,可能作为加载testing的影响,增加loggingtypes…

testing从头开发的应用程序:我已经写了一个简单的testing应用程序来检查接收通知。 我只能收到创buildlogging的通知。 我的代码有什么问题:

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) {} 

}

我过去经历过这种行为。 在我的情况下,我可以通过删除订阅并重新创build它来解决它。 你应该从代码而不是仪表板做到这一点。 从仪表板执行此操作只适用于您放入仪表板的帐户。