我正在尝试使用CloudKit,但是我的订阅时遇到了一些非常奇怪的事情。
我有一个非常简单的订阅设置,它在我的iPhone 6和我的iPad视网膜mini上运行良好。但是,当我在iPhone 5上运行完全相同的代码(所有运行最新版本的iOS)时,我会收到重复的订阅通知。
我甚至重置了我的ck / dev环境并删除并重新安装了所有设备上的应用程序。
以下是订阅代码,它位于“入门”页面之后:
func subscribe(myID: String) {
let predicate = NSPredicate(format: "sender != %@", myID)
let subscription = CKSubscription(recordType: "Message", predicate: predicate, options: CKSubscriptionOptions.FiresOnRecordUpdate)
let notificationInfo = CKNotificationInfo()
notificationInfo.alertActionLocalizationKey = "UPDATED MESSAGE!!"
notificationInfo.shouldBadge = true
subscription.notificationInfo = notificationInfo
self.myDatabase.saveSubscription(subscription, completionHandler: ({subscription, error in
if let err = error {
print("error saving subscription: \(err)")
} else {
print("Saved subscription")
}
}))
}
在日志中,我可以看到它正在被更新的CKRecordID相同,但它会返回两个不同的通知ID。
另一件有趣的事情是,如果我从模拟器发送消息,那么任何设备都不会加倍。如果我从(真正的)iPhone 5发送消息,iPad和iPhone 6不会加倍。如果我从iPad或iPhone 6发送消息,iPhone 5就会翻倍。
我还验证了没有重复相同的更新被推送到云 - 即使它们是,但问题是为什么在不同设备上运行的相同代码在一个设备中推送两次,而不是在其他设备上;就目前而言,我想知道为什么我在接收端加倍。
之前有人见过这个吗?