728x90
참고:
https://alamofire.github.io/Alamofire/Classes/SessionDelegate.html
https://moonggi-dev-story.tistory.com/7
Alamofire 라이브러리에 timeout 을 달아보자
iOS 대표 라이브러리라 불리는 Alamofire 에 대해 timeout 셋팅을 하고싶었다.. 테스트 결과 기본적으로 1분정도 timeout이 셋팅 되어 있는거 같다. 현재 ARS 같은경우 1분을 훌쩍넘는 시간동안 인증을 한
moonggi-dev-story.tistory.com
sessionManager
기본적으로 제공되는 alamofire의 sessionManager의 속성을 커스텀하고 싶을 때 configuration을 이용한다.
네크워크 통신 중 timeout을 세팅하기 위해서 configuration의 'timeoutIntervalForRequest'를 set해준다. (세팅값은 초단위로 설정)
커스텀한 configuration을 alamofire session에 세팅
class Network {
static var shared = Network()
private var sessionManager: Session = {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10
let sessionManager = Session(configuration: configuration, delegate: SessionDelegate(), serverTrustManager: nil)
return sessionManager
}()
private init() {}
커스텀 sessionManager 사용
func appVersion(handler: @escaping (Result<AppVersion, AFError>)->Void) {
sessionManager.request("\(baseUrl)\(APIType.appVersion.rawValue)",
method: .get,
parameters: nil).responseDecodable(of: AppVersion.self) { response in
handler(response.result)
}
}
Network.shared.appVersion { response in
switch response {
case .success(let value):
case .failure(let error):
print(error.localizedDescription)
if error.isSessionTaskError {
self.loadingLb.text = "서버 통신 오류입니다.\n잠시 후 다시 시도해 주세요."
}
}
}
728x90
댓글