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 で機能すると思います。しかし、ゾーンを実装したくありませんでした (それ以外の場合は必要ありません)。
質問: クエリに基づくプライベート DB の CKSubscriptions に問題はありますか?