【发布时间】:2016-08-27 13:02:47
【问题描述】:
我正在关注'CloudKit Best Practices' WWDC talk关于添加订阅的内容,iOS10 中似乎有所改变。
下面的代码返回“成功!”,但我的“AllChanges”订阅从未出现在 CloudKit 仪表板的订阅类型中。
我正在使用 Xcode 8 beta 6。
let subscription = CKDatabaseSubscription(subscriptionID:"AllChanges")
let notificationInfo = CKNotificationInfo()
notificationInfo.shouldSendContentAvailable = true
subscription.notificationInfo = notificationInfo
let operation = CKModifySubscriptionsOperation(subscriptionsToSave: [subscription], subscriptionIDsToDelete: [])
operation.modifySubscriptionsCompletionBlock = {
(modifiedSubscriptions: [CKSubscription]?, deletedSubscriptionIDs: [String]?, error: Error?) -> Void in
if error != nil {
print(error!.localizedDescription)
} else {
print("Success!")
}
}
operation.qualityOfService = .utility
privateDatabase.add(operation)
【问题讨论】:
-
订阅有效吗?您是否尝试过使用 CKDatabase.fetchAllSubscriptions(completionHandler:) 获取您的 privateDatabase 中的所有订阅并查看它是否存在?
-
privateDatabase.fetchAllSubscriptions { (subscription: [CKSubscription]?, error: Error?) in print("Error = (error)") print("Subs = (subscription)") }
-
1) 您是否尝试过在您的 modifySubscriptionsCompletionBlock 中打印 modifiedSubscriptions 的内容以确保它不为空? 2.) 您是否尝试过在 CloudKit Dashboard 中重置开发环境?
-
当我打印出 modifiedSubscriptions 时,里面有我的 AllChanges 订阅。我重置了开发环境,订阅仍然没有添加,虽然记录上传到 CloudKit 很好。
-
我看到与 Xcode 8 版本类似。我可以在私有数据库上创建没有问题的记录,但 CKModifySubscriptionsOperation 出现错误:(
)通知注册工作,用户被要求接受远程通知等。
标签: ios swift cloudkit ios10 cksubscription