AWS iOS SDK AWSServiceManager 多种服务配置

Ter*_*ona 3 objective-c amazon-s3 amazon-web-services ios swift

我已将AWS iOS SDK ( v.2.3.6 ) 集成到我的应用程序中。它运行良好,但我注意到defaultServiceManager有一个免责声明:

“您应该使用这种单例方法而不是创建服务管理器的实例”。

我通常不会遇到这个问题,除非它的defaultServiceConfiguration是不可变的:

“此属性只能设置一次,任何后续设置器都将被忽略。”

我要求服务配置(即 identityPoolId + region)能够在运行时更改。

有什么可能的方法来解决这个问题?我希望能够在任何时候重置服务配置,但考虑到文档的内容,这不太可能。

Yos*_*uda 5

您不应改变默认服务配置。相反,每个服务客户端都提供以下类方法:

+ register[ServiceClientName]WithConfiguration:forKey:
+ [ServiceClientName]ForKey:
Run Code Online (Sandbox Code Playgroud)

例如,对于AWSS3TransferUtility,它们是:

+ registerS3TransferUtilityWithConfiguration:forKey:
+ S3TransferUtilityForKey:
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以在运行时为每个服务客户端传递不同的服务配置。通过遵循此模式,您可以避免无意中“污染”的默认服务配置错误,这些错误可能非常难以调试。