首页 > 解决方案 > AWSMobileClient iOS SDK - 获取 AWS 凭证时无法获取身份 ID

问题描述

我有一个使用 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()方法重试。

我花了几个小时查看我自己的代码和导致错误的堆栈跟踪,并且在思考如何解决甚至进一步调试这个问题时陷入了死胡同。

希望有人能够提出一些帮助我的建议 - 谢谢!:)

标签: iosswiftamazon-web-servicesaws-sdkaws-amplify

解决方案


推荐阅读