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