Ios CloudKit订阅是否有特定于设备的技巧?
我在尝试CloudKit时玩得很开心,但我在订阅时遇到了一些非常奇怪的事情 我有一个非常简单的订阅设置,它在我的iphone6和ipadretinamini上运行得非常好。然而,当我在iPhone 5上运行完全相同的代码时(都运行最新版本的iOS),我会收到重复的订阅通知 我甚至重置了ck/dev环境,删除并重新安装了所有设备上的应用程序 以下是订阅代码,它位于“入门”页面上:Ios CloudKit订阅是否有特定于设备的技巧?,ios,swift,cloudkit,Ios,Swift,Cloudkit,我在尝试CloudKit时玩得很开心,但我在订阅时遇到了一些非常奇怪的事情 我有一个非常简单的订阅设置,它在我的iphone6和ipadretinamini上运行得非常好。然而,当我在iPhone 5上运行完全相同的代码时(都运行最新版本的iOS),我会收到重复的订阅通知 我甚至重置了ck/dev环境,删除并重新安装了所有设备上的应用程序 以下是订阅代码,它位于“入门”页面上: func subscribe(myID: String) { let predicate = NSPredic
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
另一件有趣的事情是,如果我从模拟器发送消息,任何设备都不会加倍。如果我从(真实的)iPhone5上发送消息,iPad和iPhone6不会得到任何翻倍。如果我从iPad或iphone6发送信息,iphone5将获得双倍的收益
我还验证了没有重复的相同更新被推送到云端——即使是,问题是为什么运行在不同设备上的相同代码在一个设备上推两次,而不是在其他设备上;就目前而言,我想知道为什么我的接收端要加倍
以前有人看到过吗?不管它值多少钱,我掸掉了一台旧的iPhone4S并开始用它进行测试,我没有发现问题所在。这很令人困惑。我不明白为什么在某个特定设备上的消息会加倍。有一件事可能是有意义的,那就是如果在该设备第一次运行并设置订阅后,myID在该设备上发生更改,这是有原因的。如果发生这种情况,我可以看到该设备发送两个不同的订阅请求,例如,一个用于message sender!=X和一个用于消息发送者!=我不知道为什么它会从X变为Y,但它确实值得考虑。。。我今晚会查的,这个胎面怎么了?你找到原因了吗?我没有找到原因;你看到类似的东西了吗?该项目一直处于停顿状态,但我做的一件事是将构建推到TestFlight,订阅在该环境中根本不起作用。总有一天我会添加一些UI可见调试,并再次将其推送到TF。这肯定有点烦人。嗨,本,谢天谢地,没有。但我使用云工具包,这是一个斗争,有时试图管理更新。我的大部分问题都围绕着在cloudKit更新之前应用程序的控制问题,需要围绕每个all编写额外的代码以确认调用已经执行。根本无法依赖完成条款。当我写这篇文章的时候,也许这里也有一些东西。如果在控制台上显示“Saved subscription”(已保存订阅),您会感激它,因为它确实没有在该点上保存订阅。