CKQuerySubscription:订阅失败
CKQuerySubscription: Failing to Make Subscription
我有一个 iOS 应用程序,我正在使用 CloudKit。我正在尝试订阅。
import CloudKit
class HomeViewController: UIViewController {
override func viewDidLoad() {
registerSubscription()
}
func registerSubscription() {
let cloudContainer = CKContainer(identifier: "iCloud.com.xxx.XXXXX")
let privateDB = cloudContainer.privateCloudDatabase
let predicate = NSPredicate(format: "TRUEPREDICATE") // TRUEPREDICATE: all records of the specified type match the predicate
let subscription = CKQuerySubscription(recordType: "PrivateRecords", predicate: predicate, options: .firesOnRecordCreation)
privateDB.save(subscription, completionHandler: ({returnRecord, error in
if let err = error {
print("Subscription has failed: \(err.localizedDescription)")
} else {
print("Subscription set up successfully")
print("Subscription ID: \(subscription.subscriptionID)")
}
}))
}
}
而且会一直报错。错误说明如下。
Subscription with a nil notificationInfo: CKQuerySubscription: 0x7fd7bfca7ec0; ; Query Subscription: recordType=PrivateRecords, predicate=TRUEPREDICATE, subscriptionOptions=1, subscriptionID=728863F8-3852-4A12-B5C6-F65EC945207A, zoneID=(null)
我可以根据订阅ID删除订阅。但是每次我 运行 这个应用程序时它都会给我一个不同的 ID。我实际上已经用 macOS 应用程序做了同样的事情。它有一个订阅。此外,我大约一周前删除了一个订阅类型,看看会发生什么。我真的不知道订阅 ID 有什么用。
那么我在订阅时做错了什么?谢谢
CKQuerySubscription
扩展 CKSubscription
。在保存订阅之前需要设置的属性之一是 notificationInfo
。该消息指出此 属性 是 nil
并且应该设置为有用的东西。
CKQuerySubscriptions 有一个 属性 notificationInfo,你需要做的是类似下面的事情:
let notification = CKSubscription.NotificationInfo()
notification.alertBody = "You have a new message"
notification.shouldSendContentAvailable = true
newSubscription.notificationInfo = notification
我有一个 iOS 应用程序,我正在使用 CloudKit。我正在尝试订阅。
import CloudKit
class HomeViewController: UIViewController {
override func viewDidLoad() {
registerSubscription()
}
func registerSubscription() {
let cloudContainer = CKContainer(identifier: "iCloud.com.xxx.XXXXX")
let privateDB = cloudContainer.privateCloudDatabase
let predicate = NSPredicate(format: "TRUEPREDICATE") // TRUEPREDICATE: all records of the specified type match the predicate
let subscription = CKQuerySubscription(recordType: "PrivateRecords", predicate: predicate, options: .firesOnRecordCreation)
privateDB.save(subscription, completionHandler: ({returnRecord, error in
if let err = error {
print("Subscription has failed: \(err.localizedDescription)")
} else {
print("Subscription set up successfully")
print("Subscription ID: \(subscription.subscriptionID)")
}
}))
}
}
而且会一直报错。错误说明如下。
Subscription with a nil notificationInfo: CKQuerySubscription: 0x7fd7bfca7ec0; ; Query Subscription: recordType=PrivateRecords, predicate=TRUEPREDICATE, subscriptionOptions=1, subscriptionID=728863F8-3852-4A12-B5C6-F65EC945207A, zoneID=(null)
我可以根据订阅ID删除订阅。但是每次我 运行 这个应用程序时它都会给我一个不同的 ID。我实际上已经用 macOS 应用程序做了同样的事情。它有一个订阅。此外,我大约一周前删除了一个订阅类型,看看会发生什么。我真的不知道订阅 ID 有什么用。
那么我在订阅时做错了什么?谢谢
CKQuerySubscription
扩展 CKSubscription
。在保存订阅之前需要设置的属性之一是 notificationInfo
。该消息指出此 属性 是 nil
并且应该设置为有用的东西。
CKQuerySubscriptions 有一个 属性 notificationInfo,你需要做的是类似下面的事情:
let notification = CKSubscription.NotificationInfo()
notification.alertBody = "You have a new message"
notification.shouldSendContentAvailable = true
newSubscription.notificationInfo = notification