Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CloudKit订阅是否有特定于设备的技巧?_Ios_Swift_Cloudkit - Fatal编程技术网

Ios CloudKit订阅是否有特定于设备的技巧?

Ios CloudKit订阅是否有特定于设备的技巧?,ios,swift,cloudkit,Ios,Swift,Cloudkit,我在尝试CloudKit时玩得很开心,但我在订阅时遇到了一些非常奇怪的事情 我有一个非常简单的订阅设置,它在我的iphone6和ipadretinamini上运行得非常好。然而,当我在iPhone 5上运行完全相同的代码时(都运行最新版本的iOS),我会收到重复的订阅通知 我甚至重置了ck/dev环境,删除并重新安装了所有设备上的应用程序 以下是订阅代码,它位于“入门”页面上: func subscribe(myID: String) { let predicate = NSPredic

我在尝试CloudKit时玩得很开心,但我在订阅时遇到了一些非常奇怪的事情

我有一个非常简单的订阅设置,它在我的iphone6和ipadretinamini上运行得非常好。然而,当我在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

另一件有趣的事情是,如果我从模拟器发送消息,任何设备都不会加倍。如果我从(真实的)iPhone5上发送消息,iPad和iPhone6不会得到任何翻倍。如果我从iPad或iphone6发送信息,iphone5将获得双倍的收益

我还验证了没有重复的相同更新被推送到云端——即使是,问题是为什么运行在不同设备上的相同代码在一个设备上推两次,而不是在其他设备上;就目前而言,我想知道为什么我的接收端要加倍


以前有人看到过吗?

不管它值多少钱,我掸掉了一台旧的iPhone4S并开始用它进行测试,我没有发现问题所在。这很令人困惑。我不明白为什么在某个特定设备上的消息会加倍。有一件事可能是有意义的,那就是如果在该设备第一次运行并设置订阅后,myID在该设备上发生更改,这是有原因的。如果发生这种情况,我可以看到该设备发送两个不同的订阅请求,例如,一个用于message sender!=X和一个用于消息发送者!=我不知道为什么它会从X变为Y,但它确实值得考虑。。。我今晚会查的,这个胎面怎么了?你找到原因了吗?我没有找到原因;你看到类似的东西了吗?该项目一直处于停顿状态,但我做的一件事是将构建推到TestFlight,订阅在该环境中根本不起作用。总有一天我会添加一些UI可见调试,并再次将其推送到TF。这肯定有点烦人。嗨,本,谢天谢地,没有。但我使用云工具包,这是一个斗争,有时试图管理更新。我的大部分问题都围绕着在cloudKit更新之前应用程序的控制问题,需要围绕每个all编写额外的代码以确认调用已经执行。根本无法依赖完成条款。当我写这篇文章的时候,也许这里也有一些东西。如果在控制台上显示“Saved subscription”(已保存订阅),您会感激它,因为它确实没有在该点上保存订阅。