实际上有两种可能的方法来解决这个问题,
1)配置时AWSAppSyncClientConfiguration
, 提供自定义URLSessionConfiguration
并设置请求timeout
根据您的需求,
extension URLSessionConfiguration {
/// A `URLSessionConfiguration` to have a request timeout of 1 minutes.
static let customDelayed: URLSessionConfiguration = {
let secondsInOneMinute = 60
let numberOfMinutesForTimeout = 1
let timoutInterval = TimeInterval(numberOfMinutesForTimeout * secondsInOneMinute)
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = timoutInterval
configuration.timeoutIntervalForResource = timoutInterval
return configuration
}()
}
并传递此会话配置,即URLSessionConfiguration.customDelayed
初始化时AWSAppSyncClientConfiguration
因为它接受URLSessionConfiguration
在下面的构造函数中,
public convenience init(url: URL,
serviceRegion: AWSRegionType,
credentialsProvider: AWSCredentialsProvider,
urlSessionConfiguration: URLSessionConfiguration = URLSessionConfiguration.default,
databaseURL: URL? = nil,
connectionStateChangeHandler: ConnectionStateChangeHandler? = nil,
s3ObjectManager: AWSS3ObjectManager? = nil,
presignedURLClient: AWSS3ObjectPresignedURLGenerator? = nil) throws {
2)如果第一个不起作用,那么您还有另一个选项可以直接编辑/解锁 pod 文件。有一个班级AWSAppSyncRetryHandler
您可以在其中更改重试请求的逻辑。如果您能够解决问题,那么您可以分叉原始存储库、克隆您的存储库、在存储库中进行更改,并在 pods 文件中指向此 pod 以使用您的存储库。应该这样做,因为直接更改 pod 文件是绝对错误的,除非您真的陷入困境并想要找到一些解决方案。
Update: This issue https://github.com/awslabs/aws-mobile-appsync-sdk-ios/issues/91#issuecomment-440550288已修复AppSync SDK 2.7.0