2015-05-19 69 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。我還在我的目標的後臺模式功能中激活了「遠程通知」。 –