안드로이드
-
Room Migration 적용기안드로이드 2023. 7. 25. 00:34
필자가 만들었던 옛날 앱 애플갬성측정기를 리팩터링하면서 겪은 시행착오 중 Room Migration에 대한 적용기이다. 약 4년 전에 만들어서 그런지, 관심사 분리는 커녕, 한 모델에 remote 응답 값, entity 값, 도메인 등등이 모두 섞여있었고, 디비 스키마도 마음에 들지 않았다. 변경해야 할 항목은 크게 세 가지로 나눠볼 수 있었다. Room Coroutine 화 Entity Model이 View까지 전파되지 않게 완전한 관심사 분리 DB Schema 변경 1번은 굉장히 쉬운 편에 속했다. 디비 호출을 다른 thread에서 동작시킨 뒤, 결과 값을 main thread로 옮겨주는 로직은 당시 구글 예제 앱에 있던 Executor 객체를 모방해서 사용하고 있었다. 그래서 Coroutine으로 ..
-
안드로이드 만료 토큰 갱신 / 요청 api에 토큰 삽입 자동화 시스템 개발기 - 3 Interceptor에서 Token 삽입하기 편 [Android Retrofit Auto Insert Token & Auto Refresh Token]안드로이드 2021. 11. 29. 00:07
이번 편은 Retrofit Interface에서 Token Parameter를 없앤 방법에 대해서 이야기할 것이다. 먼저, 사내 인증 시스템에서는 토큰을 이중으로 발급 받아야하는 상황이라고 적었었다. 라마인드 하자면, 아래 두 절차를 통해 최종적으로 Online Token을 발급 받아야 사내 API를 요청할 수 있게 된다. 사내 SDK를 통해 이메일/패스워드를 인풋으로 넣고 Mobile 인증 Token을 발급 받기. Mobile 인증 Token을 넣고 사내 인증 시스템 api를 호출해서 Online Token 발급받기. 편한 설명을 위해서 아래부터는 1번을 Mobile Token, 2번을 Online Token이라고 부르겠다. Online Token을 발급받기 위해서는 Mobile Token이 필요하다!..
-
안드로이드 만료 토큰 갱신 / 요청 api에 토큰 삽입 자동화 시스템 개발기 - 2 Token Repository 설계, 관심사의 분리 편 [Android Retrofit Auto Insert Token & Auto Refresh Token]안드로이드 2021. 11. 13. 16:47
이번 편에서는 토큰 관리를 어떻게 했는지 다뤄보려고 한다. 사내 인증 시스템은 토큰 발급이 이중으로 되어있었다. 1. 사내 인증 SDK를 통한 MobileToken 발급 (id, password 인풋) 2. 인증 API에 MobileToken을 Header로 넣고 요청을 보내 응답받은 OnlineToken 3. OnlineToken으로 모든 사내 API 요청 가능 이렇게 OnlineToken이 필요한 모든 요청에서 토큰 요청과 만료됐을 때의 재발급 로직이 중복해서 여기저기 흩어져있다면 유지 보수하기 매우 어려운 코드가 될 것이라고 생각했다. 관심사의 분리 Repository Layer에서 API 요청에 필요한 검증된 OnlineToken을 반환하기만 한다면, 상위 Layer에서는 매우 편리하게 Token..
-
Android Okhttp Interceptor로 원하는 응답으로 변형하기와 Interceptor Test안드로이드 2021. 10. 31. 02:13
Okhttp 라이브러리 중 Interceptor를 Test 하는 방법에 주관 가득한 생각을 담아 써보려 한다. Interceptor는 실제 서버 통신이 일어나기 직전, 직후에 요청을 가로채서 무언가 어썸한 작업을 한 후에 다시 원래 흐름으로 돌려놓는 기능을 제공한다. 아래 사진이 직관적으로 이해하기 좋다. 왜 Interceptor를 사용했는가? Interceptor는 다양한 방법으로 활용할 수 있는데, 필자는 서버 응답을 재가공하기 위해서 사용했다. 사이드 프로젝트에서 사용하는 서버의 응답 Json은 아래와 같은 포맷이다 응답이 성공인 경우 { "status": 200, "success": true, "message": "blar blar", "data": { "key": "value" } } 응답이 실..