개요전에 소셜 로그인 (구글 로그인) 구현할 때 전략패턴을 적용했었다. (관련 링크)프로젝트 백로그 중에 카카오 로그인 도입이 있어, 공부했던 코루틴을 잘 적용한 과정을 글로 남기려 한다. 카카오 로그인 도입 그리고..카카오 로그인은 예전에 도입해본 경험이 있어, 어렵지 않게 코드를 작성했다. 또한, 전략 패턴을 이용했었기에 크게 수정하는 부분 없이 쉽게 도입할 수 있었다. 그러나 필자가 해야할 숙제는 `콜백 지옥에서 탈출하기`이다. 우선, 카카오 로그인 메서드를 들여다 보았다./* 카카오톡으로 로그인 */fun loginWithKakaoTalk( context: Context, requestCode: Int = AuthCodeClient.DEFAULT_REQUEST_CODE, nonc..
안드로이드
개요초기 앱 개발 시 이 프로젝트엔 인터랙션이라고는 찾아볼 수 없었다. 클릭 이벤트에 있어서, 나는 당연히 `noRippleClickable`(리플 효과 제거) 이 제일 괜찮은 줄 알았다. 그래서 그렇게 해왔고, 그렇게 하려고 했다.그러나 나의 생각을 바꾼 건 토스 앱이었다. 그냥 무심코 썼던 토스를 유심히 관찰하니 훌륭한 인터랙션들을 찾아볼 수 있었다. 그리고 관련해서 찾아보다가 토스 팀의 고민과 해결이 담긴 좋은 글도 읽어보았다. 물론 처음부터 훌륭한 인터랙션을 적용할 수는 없어서 (실력 이슈 및 시간 이슈ㅠㅠ), 하고자 하는 인터랙션과 그 이유를 들어 일단 팀원분들께 양해를 구했다. 정말 감사하게도 의견을 반영해 주셨고, 오히려 먼저 생각하고 계셨다고 다양한 의견을 적극적으로 주셨다. (정말 감사합..
Retrofit이 글은 레트로핏 라이브러리를 사용하고 있다.레트로핏은 HTTP API에 대해 직접적인 조작 없이 인터페이스를 사용하여 쉽게 요청을 보낼 수 있고 응답 결과를 자바 오브젝트로 변환해 주는 라이브러리이다. 또한 코틀린을 사용한다면 API 호출 시 내부적으로 요청이 이루어지기 때문에 따로 콜백을 정의할 필요 없이 바로 응답 객체를 받을 수 있다.네트워크 예외 처리안드로이드 네트워크 예외 처리에는 여러가지 방법이 있을 수 있다.필자는 retrofit 의 `Response`를 그대로 받아 처리하는 공통 `apiHandler`를 작성해 두어 처리를 했었다.fun apiHandler(apiFunc: suspend () -> Response): Flow = flow { try { ..
들어가기 전에본격적으로 프로젝트를 시작하기 전에 적절한 UI 갱신 및 리컴포지션 관리에 대해 관심이 생겼다. 이는 Compose에서 성능을 위해 필수적 요소라고 생각한다.. 나는 상태관리를 엉망으로 하고 있다는 걸 평소에 느꼈기 때문에 상태관리에 집중하고자 MVI 패턴을 공부하려 한다. (우연히 본 깃허브와 유튜브가 흥미를 돋게 한 것도 있다)MVI 패턴MVI 패턴은 Model, View, Intent로 크게 3가지 구성요소로 이루어져 있다. Model: UI에 반영될 상태 View: UI Intent : 사용자 액션, 시스템 이벤트에 따른 결과 (`android.content.Intent` 아님) M-V-I의 관계는 순수함수 형식으로 표현 가능한데, 단방향 흐름을 나타내고 있다. View에서 버튼 클릭..