На самом деле может быть два возможных способа решения проблемы,
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) Если первое не работает, у вас есть другая возможность редактировать / разблокировать файлы модуля напрямую. Существует класс AWSAppSyncRetryHandler
, где вы можете изменить логику повторного запроса. Если вам удастся решить проблему, вы можете разветвить исходное репо, клонировать репо, внести изменения в репо и в файл pods, указав этот модуль для использования своего репозитория. Это должно быть сделано, так как изменение файлов pod напрямую абсолютно неправильно, пока вы действительно не застряли и не хотите найти какое-то решение.
Обновление : эта проблема была исправлена с AppSync SDK 2.7.0