私有数据库中的CloudKit订阅

时间:2015-05-19 15:02:29

标签: ios swift cloudkit cksubscription

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

现在我想使用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!")
    }
  })
}

到目前为止,我无法触发设备通知。

我知道您可以根据区域创建订阅。区域位于私有DB中,因此我认为CKSubscriptions可以在私有DB中工作。 但我不想实现区域(我不需要其他区域)。

问题:基于查询,私有数据库中的CKSubscriptions是否存在问题?

1 个答案:

答案 0 :(得分:1)

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