我有一个使用Cocoapods安装的AWSMobileClient SDK(v2.9.9)的iOS Swift项目。
应用中经常使用一种有问题的方法:
AWSMobileClient.sharedInstance().getAWSCredentials { (credentials, error) in ... }
并且发生一个特定的致命错误:
在另一个线程中获取身份ID失败或在5秒钟内未完成。
在某些设备上,它可以在90%的时间内正常工作,并且通常只在一系列步骤之后才会发生-例如登录,注销,再次登录(登录后称为该方法)。
但是,最近一次在我一直在测试的新设备上出现过一次。
还有一个堆栈问题在这里,暗示另一AWS SDK操作可以并行运行的时候getAWSCredentials
被调用-但审查我的代码后,我相当肯定这是不是这样的。
我还尝试在发生故障的设备上运行此方法,以查看是否可以提供任何线索:
AWSMobileClient.sharedInstance().getIdentityId().continueWith { task -> Any? in ... }
并返回此错误:
在另一个线程上获取标识ID失败。请通过调用
getIdentityId()
方法重试 。
我花了数小时来查看自己的代码和导致错误的堆栈跟踪,并陷入了如何解决甚至进一步调试的死路。
希望有人能够提出一些帮助我的建议-谢谢!:)