2015-05-19 70 views
0

我有一个应用程序,我想要添加使用CloudKit将数据备份到iCloud的可能性。 “备份”部分似乎正常工作(我的记录在私人数据库中,因为它们......好吧,私人)。私有数据库中的CloudKit订阅

现在我想使用CKSubscriptions来保持我的所有设备与同一数据同步。 我试图实现一个CKSubscription来监视基于查询(不基于区域)的查询创建/更新/删除。

func subscribe() { 

    let options = CKSubscriptionOptions.FiresOnRecordCreation | 
    CKSubscriptionOptions.FiresOnRecordDeletion | 
    CKSubscriptionOptions.FiresOnRecordUpdate 


    let predicate = NSPredicate(value: true) // get all the records for a given type 
    let subscription = CKSubscription(recordType: "Stocks", 
    predicate: predicate, subscriptionID: subscriptionID, 
    options: options) 

    subscription.notificationInfo = CKNotificationInfo() 
    subscription.notificationInfo.alertBody = "" 

    db.saveSubscription(subscription, completionHandler: { 
    subscription, error in 
    if (error != nil) { 
     println("error subscribing: \(error)") 
    } else { 
     println("subscribed!") 
    } 
    }) 
} 

到现在为止,我还没有能够触发通知到我的设备。

我知道你可以创建一个基于区域的订阅。区域位于私人数据库中,因此我认为CKSubscriptions可以在私人数据库中工作。 但我不想实施区域(我不需要)。

问题:基于查询,私人数据库中的CKSubscriptions存在问题吗?

+0

更新我的问题:如果在我的选项中,我只有CKSubscriptionOptions.FiresOnRecordCreation,它的工作原理。但是如果我提出另一个选项或者选项的组合,那么它就不再起作用了。 Bug报告和DTS支持问,目前没有任何结果。 –

回答

1

这应该工作。私有数据库支持非区域订阅(基于查询的订阅)。您是否添加了代码以在您的AppDelegate中接收通知?

+0

是的,我做到了。我添加了函数didRegisterForRemoteNotificationsWithDeviceToken,didFailToRegisterForRemoteNotificationsWithError和didReceiveRemoteNotification。我还在我的目标的后台模式功能中激活了“远程通知”。 –