【发布时间】:2018-11-06 19:40:11
【问题描述】:
在 CloudKit 中订阅公共数据库的最佳方式是什么? 我有一张桌子。每个人都包含一个名字和一个位置。 一旦位置发生变化,该位置就会在 CloudKit 中更新。 这部分工作正常。
但我无法在有记录更新时获得通知。
一些例子会很有帮助,因为我已经研究了可能的选项。 我研究了将订阅保存在数据库中的选项以及 CKModifySubscriptionsOperation 选项。
目前,我的订阅代码如下所示:
let predicate = NSPredicate(format: "TRUEPREDICATE")
let newSubscription = CKQuerySubscription(recordType: "Person", predicate: predicate, options: [.firesOnRecordCreation, .firesOnRecordDeletion, .firesOnRecordUpdate])
let info = CKSubscription.NotificationInfo()
info.shouldSendContentAvailable = true
newSubscription.notificationInfo = info
database.save(newSubscription, completionHandler: {
(subscription, error) in
if error != nil {
print("Error Creating Subscription")
print(error)
} else {
userSettings.set(true, forKey: "subscriptionSaved")
}
})
谁能告诉我我的 AppDelegate 应该是什么样子?
我已将 didReceiveRemoteNotification 函数添加到我的 AppDelegate。我还调用了 application.registerForRemoteNotifications()。这就是我的 didReceiveRemoteNotification 函数的样子: 我什至没有打印出来。
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
print("Notification!!")
let notification = CKNotification(fromRemoteNotificationDictionary: userInfo) as? CKDatabaseNotification
if notification != nil {
AppData.checkUpdates(finishClosure: {(result) in
OperationQueue.main.addOperation {
completionHandler(result)
}
})
}
}
【问题讨论】:
-
我不是那种只会去stackoverflow随便问一个问题的人。我已经对 stackoverflow 和其他网站进行了适当的研究,并且还阅读了 iBook 中关于 IOS12 swift 开发的 CloudKit 部分。到现在还没有任何结果。
-
一个问题。是否有可能订阅公共数据库的通知?;)这仅适用于私有和共享,但不适用于公共。我说的对吗?
标签: ios swift database cloudkit