【问题标题】:CloudKit subscriptions in the private database私有数据库中的 CloudKit 订阅
【发布时间】:2015-05-19 15:02:28
【问题描述】:

我有一个应用程序,我想为其添加使用 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!")
    }
  })
}

到现在为止,我还无法向我的设备触发通知。

我知道您可以创建基于区域的订阅。区域在私有数据库中,所以我想 CKSubscriptions 可以在私有数据库中工作。 但我不想实现区域(否则我不需要)。

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

【问题讨论】:

  • 更新我的问题:如果在我的选项中,我只有 CKSubscriptionOptions.FiresOnRecordCreation,它可以工作。但是,如果我提出另一个选项或选项组合,那么它就不再起作用了。报告了错误并要求 DTS 支持,目前没有任何结果。

标签: ios swift cloudkit cksubscription


【解决方案1】:

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

【讨论】:

  • 是的,我做到了。我添加了函数 didRegisterForRemoteNotificationsWithDeviceToken、didFailToRegisterForRemoteNotificationsWithError 和 didReceiveRemoteNotification。我还在目标的后台模式功能中激活了“远程通知”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
相关资源
最近更新 更多