Xcode 版本 11.5 CloudKit 无法在模拟器上运行

Posted

技术标签:

【中文标题】Xcode 版本 11.5 CloudKit 无法在模拟器上运行【英文标题】:Xcode Version 11.5 CloudKit not working on simulator 【发布时间】:2020-07-04 14:19:17 【问题描述】:

在上次更新之前,我可以在模拟器上使用 CloudKit 管理数据,上次更新后,它无法正常工作,如果我在 iCloud Drive 中添加文件,模拟器中的文件夹也不会更新。

在我的函数中,我收到 couldNotComplete 状态:

defaultContainer.requestApplicationPermission(.userDiscoverability, completionHandler: status, error in
            switch status 
            case .denied:
                DispatchQueue.main.async //necessario perchè lo fa in background e potrebbe crashare senza questo
                    completionHandler(status)
                    self.showSettingsAlert()
                
            case .initialState:
                DispatchQueue.main.async 
                    completionHandler(status)
                    self.showSettingsAlert()
                
            case .couldNotComplete:
                DispatchQueue.main.async 
                    completionHandler(status)
                    self.showSettingsAlert()
                
                print("@couldNotComplete requestApplicationPermission (func getUserPermission) - probabilmente non ha un account icloud")                
            case .granted:
                completionHandler(status)
            @unknown default:
                print("@unknown requestApplicationPermission (func getUserPermission)")
            
        )

但问题出在令牌上:

Optional("Couldn\'t get an authentication token")

你有同样的问题吗?

【问题讨论】:

这里没问题。你确定你在模拟器上登录了吗?如果是这样,请注销然后重新登录。 @johnelemans 是的,我有 3 个帐户,一个在设备上,两个在两个模拟器中,一个 iPhone 和一个 iPad。在设备上仍在工作,在 2 模拟器(ios 13.5)上不,如果一段时间询问密码,也会记录设置中的 bat 【参考方案1】:

对不起,我无法提供答案,但我可以说不只是你;这也开始发生在我身上。我知道的一些事情:

最初一切正常,然后在某些时候我被要求重新输入我的 iCloud 密码(“Apple ID 验证”)。

模拟器接受密码,但过了那个点 CloudKit(和更多)停止工作。

CloudKit 返回的错误如下: Optional()

我尝试使用“功能 | 触发 iCloud 同步”来查看是否会启动 iCloud,但它没有。

在 iPhone 模拟器上退出似乎永远不会结束;到目前为止,我一直不得不使用“擦除所有内容和设置”。之后,事情又开始了,但不会持续太久。

在 iPad 模拟器上退出登录一次成功。重新登录后,一切都重新开始工作。嗯,到目前为止。 :-)

我正在使用测试帐户。我想知道 Apple 是否认为这是一个垃圾邮件帐户,所以我用它登录了 https://appleid.apple.com 并打开了双因素身份验证等。这些都没有影响。

以下是我打算尝试的一些事情,大致按顺序:

使用 iOS 13.4 的新模拟器(我目前使用的是 13.5) 新的测试帐号 Xcode 12 测试版

===

到目前为止我已经尝试过:

使用 iOS 13.4 的新模拟器 Xcode 12 测试版 重新启动我的 Mac

最终,这些事情都没有奏效;一旦我开始收到“无法获得身份验证令牌”错误——我通常会在 24 小时内得到它——唯一能让模拟器再次工作的事情就是擦除它。

我不确定的一件事是,一旦模拟器处于那种状态,anything 是否可以恢复它。例如,当我第一次启动 Xcode 12 beta 并第一次运行模拟器时,它立即要求输入密码。测试版是从已经损坏的模拟器开始的吗?更重要的是,Xcode 12 beta 会自行破坏模拟器,还是只是发现了 Xcode 11.5 实际创建的错误?我不知道。

我会尝试更多的东西......

===

创建一个新的测试帐户没有用,但我可能发现了一些有用的方法:重置钥匙串。以下是从命令行执行此操作的方法:

xcrun simctl keychain reset <device>

运行该命令后,模拟器再次要求输入 iCloud 密码,但密码现在会产生预期的结果:iCloud 再次开始工作。

(如果您的应用在您重置钥匙串时正在运行,您可能必须重新启动它,或者以其他方式给它一脚,以便它注意到更改。)

【讨论】:

对我来说,注销并删除所有内容。但是我尝试过一次,因为对我来说是最后一次测试,我必须尝试一下,如果这只是你所说的一次工作【参考方案2】:

Simone Pistecchia 的评论对我帮助最大。在模拟器菜单中,为每个有问题的模拟器选择设备 > 擦除所有内容和设置。然后退出 iCloud。

【讨论】:

以上是关于Xcode 版本 11.5 CloudKit 无法在模拟器上运行的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 11.5 发布,以修改 BUG 为主

CloudKit 权利缺失

已达到免费开发配置文件的最大应用数量。 Xcode 11.5

CloudKit - 无法从 iCloud 检索数据

无法访问 CloudKit 出现奇怪错误:内部错误 (1/2005)

Ionic v1 安全区域不适用于 Xcode 11.5 模拟器