[swift] Swift PromiseKit과 자동 로그인

안녕하세요! 이번에는 Swift PromiseKit과 자동 로그인에 대해 알아보겠습니다. PromiseKit은 Swift에서 비동기 작업을 처리하기 위한 라이브러리로, 코드의 가독성과 유지보수성을 향상시킵니다. 자동 로그인 기능은 많은 애플리케이션에서 사용되는 기능 중 하나이며, 사용자가 로그인 정보를 기억해두면 다음에 앱을 실행할 때 자동으로 로그인되는 기능을 제공합니다.

PromiseKit이란?

PromiseKit은 Swift에서 비동기 작업을 처리하기 위한 라이브러리입니다. 비동기 작업은 네트워크 요청, 서버 API 호출, 파일 다운로드 등 많은 상황에서 발생할 수 있습니다. Promise는 작업의 성공 또는 실패에 따라 처리되는 개체입니다. Promise.resolve() 메서드로 성공한 Promise를, Promise.reject() 메서드로 실패한 Promise를 생성할 수 있습니다.

PromiseKit을 사용하면 비동기 작업을 간편하게 처리할 수 있습니다. Promise 체이닝을 통해 다양한 비동기 작업들을 순차적으로 수행하면서 작업 간의 의존성을 관리할 수 있습니다.

자동 로그인 구현

자동 로그인을 구현하기 위해서는 사용자의 로그인 정보를 저장해야 합니다. 일반적으로는 로그인 시 사용자의 인증 토큰을 저장하기 위해 Keychain 또는 UserDefaults를 사용합니다. 이 예제에서는 UserDefaults를 사용하여 로그인 정보를 저장하고, PromiseKit을 사용하여 자동 로그인 기능을 구현할 것입니다.

func automaticLogin() -> Promise<User> {
    return Promise { seal in
        if let token = UserDefaults.standard.string(forKey: "authToken") {
            // 로그인 API 호출
            APIClient.login(withToken: token) { result in
                switch result {
                case .success(let user):
                    seal.fulfill(user)
                case .failure(let error):
                    seal.reject(error)
                }
            }
        } else {
            seal.reject(LoginError.noAuthToken)
        }
    }
}

// 자동 로그인 실행
automaticLogin().done { user in
    print("자동 로그인 성공! 사용자 이름: \(user.name)")
}.catch { error in
    print("자동 로그인 실패: \(error.localizedDescription)")
}

위 코드에서는 Promise를 사용하여 automaticLogin() 함수를 정의합니다. 해당 함수에서는 UserDefaults에서 인증 토큰을 가져와 로그인 API를 호출합니다. API 호출 결과에 따라 성공 시 seal.fulfill(user)를 호출하고, 실패 시 seal.reject(error)를 호출합니다.

자동 로그인을 실행하는 코드에서는 .done 블록에서 로그인 성공 시, .catch 블록에서 로그인 실패 시 처리를 하도록 합니다. 성공 시에는 사용자 이름을 출력하고, 실패 시에는 에러 메시지를 출력합니다.

이제 자동 로그인 기능을 갖춘 앱을 만들기 위해 PromiseKit을 사용할 수 있습니다. Promise 체이닝을 통해 여러 개의 비동기 작업들을 순차적으로 실행하고, 각 작업의 성공 또는 실패에 따라 다음 작업을 수행할 수 있습니다.

참고 자료