728x90
참고:
https://alamofire.github.io/Alamofire/Classes/SessionDelegate.html
https://moonggi-dev-story.tistory.com/7
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
댓글