본문 바로가기
iOS/swift

Alamofire timeout set(Swift5)

by 패쓰킴 2022. 8. 25.
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

'iOS > swift ' 카테고리의 다른 글

숫자 다루기  (1) 2023.11.07
attributedString  (0) 2022.12.26
Array  (0) 2022.12.21
String  (0) 2022.09.22
진법 변환  (0) 2022.08.31

댓글